如何在R中使用dplyr包将数值列转换为因子?


如果我们在R数据框中有一个数值列,并且该列中唯一值的个数很少,这意味着该数值列可以被视为一个因子。因此,我们可以将数值列转换为因子。要使用dplyr包执行此操作,我们可以使用dplyr包的mutate_if函数。

加载dplyr包并将BOD数据集(在基础R中可用)中的数值列转换为因子列:

示例

library(dplyr)
str(BOD)
'data.frame': 6 obs. of 2 variables:
$ Time : num 1 2 3 4 5 7
$ demand: num 8.3 10.3 19 16 15.6 19.8
- attr(*, "reference")= chr "A1.4, p. 270"
BOD%>%mutate_if(is.numeric,as.factor)

输出

  Time demand
1  1   8.3
2  2   10.3
3  3   19
4  4   16
5  5   15.6
6  7   19.8

将甲醛数据集(在基础R中可用)中的数值列转换为因子列:

示例

str(Formaldehyde)
'data.frame': 6 obs. of 2 variables:
$ carb : num 0.1 0.3 0.5 0.6 0.7 0.9
$ optden: num 0.086 0.269 0.446 0.538 0.626 0.782
Formaldehyde%>%mutate_if(is.numeric,as.factor)

输出

   carb  optden
1  0.1   0.086
2  0.3   0.269
3  0.5   0.446
4  0.6   0.538
5  0.7   0.626
6  0.9   0.782

将InsectSprays数据集(在基础R中可用)中的数值列转换为因子列:

示例

str(InsectSprays)
'data.frame': 72 obs. of 2 variables:
$ count: num 10 7 20 14 14 12 10 23 17 20 ...
$ spray: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 1 1 1 1 1 ...
InsectSprays%>%mutate_if(is.numeric,as.factor)

输出

   count spray
1  10    A
2  7     A
3  20    A
4  14    A
5  14    A
6  12    A
7  10    A
8  23    A
9  17    A
10 20    A
11 14    A
12 13    A
13 11    B
14 17    B
15 21    B
16 11    B
17 16    B
18 14    B
19 17    B
20 17    B
21 19    B
22 21    B
23 7     B
24 13    B
25 0     C
26 1     C
27 7     C
28 2     C
29 3     C
30 1     C
31 2     C
32 1     C
33 3     C
34 0     C
35 1     C
36 4     C
37 3     D
38 5     D
39 12    D
40 6     D
41 4     D
42 3     D
43 5     D
44 5     D
45 5     D
46 5     D
47 2     D
48 4     D
49 3     E
50 5     E
51 3     E
52 5     E
53 3     E
54 6     E
55 1     E
56 1     E
57 3     E
58 2     E
59 6     E
60 4     E
61 11    F
62 9     F
63 15    F
64 22    F
65 15    F
66 16    F
67 13    F
68 10    F
69 26    F
70 26    F
71 24    F
72 13    F

更新于:2021年2月11日

4K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告