Как преобразовать несколько столбцов в фактор с помощью dplyr


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

Способ 1: преобразовать определенные столбцы в фактор

 library (dplyr) 

df %>% mutate_at(c(' col1 ', ' col2 '), as. factor )

Способ 2: преобразовать все символьные столбцы в коэффициент

 library (dplyr)

df %>% mutate_if(is. character , as. factor )

Следующие примеры показывают, как использовать каждый метод на практике.  

Пример 1. Преобразование определенных столбцов в фактор

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
                 points=c(12, 24, 25, 35, 30, 14, 19, 11))

#view structure of data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: chr "A" "A" "A" "B" ...
 $position: chr "G" "G" "F" "F" ...
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

Мы видим, что столбцы команды , позиции и стартового состава являются символьными, а столбец очков — числовыми.

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

 library (dplyr) 

#convert team and position columns to factor
df <- df %>% mutate_at(c(' team ', ' position '), as. factor )

#view structure of updated data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4
 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

Мы видим, что столбцы «Команда» и «Позиция» теперь являются обоими факторами.

Пример 2. Преобразование всех символьных столбцов в фактор

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
                 starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
                 points=c(12, 24, 25, 35, 30, 14, 19, 11))

#view structure of data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: chr "A" "A" "A" "B" ...
 $position: chr "G" "G" "F" "F" ...
 $ starter: chr "Y" "Y" "Y" "N" ...
 $ points: num 12 24 25 35 30 14 19 11

Мы видим, что три столбца во фрейме данных являются символьными.

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

 library (dplyr) 

#convert all character columns to factor
df <- df %>% mutate_if(is. character , as. factor )

#view structure of updated data frame
str(df)

'data.frame': 8 obs. of 4 variables:
 $ team: Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4
 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1
 $ starter: Factor w/ 2 levels "N","Y": 2 2 2 1 1 2 1 1
 $ points: num 12 24 25 35 30 14 19 11

Мы видим, что все столбцы символов теперь являются факторами.

Примечание . Обратитесь к странице документации dplyr для получения полного объяснения функций mutate_at и mutate_if .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как преобразовать несколько столбцов в числовые с помощью dplyr
Как преобразовать коэффициент в числовой в R
Как преобразовать дату в числовое значение в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *