如何在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

以上是 如何在R中使用dplyr包将数字列转换为因数? 的全部内容, 来源链接: utcz.com/z/344856.html

回到顶部