如何使用 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

我们可以看到teampositionstarter列是字符,而points列是数字。

要将团队位置列转换为因素,我们可以使用以下语法:

 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

我们可以看到所有字符列现在都是因子。

注意:有关mutate_atmutate_if函数的完整说明,请参阅dplyr 文档页面

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何使用 dplyr 将多列转换为数字
如何在 R 中将因子转换为数字
如何在R中将日期转换为数字

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注