Как выбрать столбцы в зависимости от их типа в R? - PullRequest
1 голос
/ 17 июня 2020

У меня есть data.frame в R со многими столбцами (более 50+). Типы столбцов - целые, множительные и символьные. Есть ли быстрый способ выбрать только все столбцы символов для моего фрейма данных?

Я пробовал что-то вроде ниже, но это не сработало. : /

Пример: new_dataset <- class (old_dataset)% in% c ("character") # выбрать только символы </p>

Ответы [ 3 ]

2 голосов
/ 17 июня 2020

dplyr::select_if() заменяется на dplyr::select(where(...)) в dplyr 1.0.0

Чтобы выбрать столбцы с типом character, используйте:

library(dplyr)
storms %>% select(where(is.character)) %>% 
  glimpse()
Rows: 10,010
Columns: 2
$ name   <chr> "Amy", "Amy", "Amy", "Amy"...
$ status <chr> "tropical depression", "tropical depression"...
0 голосов
/ 17 июня 2020

Данные:

df <- data.frame(
  char = c("hi there", "how're you", "what's up"),
  int = 1:3,
  fac = c("A", "B", "C"),
  stringsAsFactors = F
)
str(df)
'data.frame':   3 obs. of  3 variables:
 $ char: chr  "hi there" "how're you" "what's up"
 $ int : int  1 2 3
 $ fac : chr  "A" "B" "C"

Вы можете выбрать столбцы, разделив фрейм данных по типу данных, таким образом:

df[sapply(df, is.character)]
        char fac
1   hi there   A
2 how're you   B
3  what's up   C

Здесь sapply применяет функцию is.character к каждому из столбцы в df. Сама функция запускает тест - имеет ли столбец тип «символ»? - и возвращает TRUE или FALSE соответственно.

0 голосов
/ 17 июня 2020

dplyr::select_if может вам помочь.

Например, это дает вам все столбцы типа character в таблице t:

> t %>% 
    select_if(is.character) %>% 
    glimpse()

Rows: 199,303
Columns: 6
$ user_type     <chr> "registered", "registered", "registered", "registered",…
$ location      <chr> "Massachusetts", "United States", "South Africa", "Loui…
$ website_url   <chr> "http://caerwyn.com", "http://www.berbs.us", "http://tu…
$ link          <chr> "https://stackoverflow.com/users/2406/caerwyn", "https:…
$ profile_image <chr> "https://www.gravatar.com/avatar/0983795ba79aaa48a86752…
$ display_name  <chr> "caerwyn", "berberich", "tumbleweed", "Nate", "Ryan", "…

Замена is.character на is.numeric, is.logical и c. получает то, что вам нужно.

...