如何在R中将数值列转换为因子列?

通常,我们发现代表因子水平的值记录为数值,因此,我们需要将这些数值转换为因子。这样,我们可以在分析中正确使用因子列,否则R程序会将因子视为数值,并且分析输出将不正确。

示例

data(mtcars)

str(mtcars)

输出结果

'data.frame': 32 obs. of 11 variables:

$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...

$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...

$ disp: num 160 160 108 258 360 ...

$ hp : num 110 110 93 110 175 105 245 62 95 123 ...

$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...

$ wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec: num 16.5 17 18.6 19.4 17 ...

$ vs : num 0 0 1 1 0 1 0 1 1 1 ...

$ am : num 1 1 1 0 0 0 0 0 0 0 ...

$ gear: num 4 4 4 3 3 3 3 4 4 4 ...

$ carb: num 4 4 1 1 2 1 4 2 2 4 ...

mtcars$cyl<-as.factor(mtcars$cyl) str(mtcars)

'data.frame': 32 obs. of 11 variables:

$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...

$ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...

$ disp: num 160 160 108 258 360 ...

$ hp : num 110 110 93 110 175 105 245 62 95 123 ...

$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...

$ wt : num 2.62 2.88 2.32 3.21 3.44 ... $ qsec: num 16.5 17 18.6 19.4 17 ...

$ vs : num 0 0 1 1 0 1 0 1 1 1 ...

$ am : num 1 1 1 0 0 0 0 0 0 0 ...

$ gear: num 4 4 4 3 3 3 3 4 4 4 ...

$ carb: num 4 4 1 1 2 1 4 2 2 4 ...

示例

data(ToothGrowth)

str(ToothGrowth)

输出结果

'data.frame': 60 obs. of 3 variables:

$ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...

$ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...

$ dose: num 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...

示例

head(ToothGrowth,20)

输出结果

   len    supp  dose

1   4.2   VC    0.5

2  11.5   VC    0.5

3  7.3   VC     0.5

4  5.8   VC     0.5

5  6.4   VC     0.5

6  10.0  VC     0.5

7  11.2  VC     0.5

8 11.2   VC     0.5

9  5.2   VC     0.5

10 7.0   VC     0.5

11 16.5  VC     1.0

12 16.5  VC     1.0

13 15.2  VC    1.0

14 17.3  VC    1.0

15 22.5  VC    1.0

16 17.3  VC    1.0

17 13.6  VC    1.0

18 14.5  VC    1.0

19 18.8  VC    1.0

20 15.5  VC    1.0

ToothGrowth$dose<-as.factor(ToothGrowth$dose)

 str(ToothGrowth)

'data.frame': 60 obs. of 3 variables:

$ len : num 4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...

$ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...

$ dose: Factor w/ 3 levels "0.5","1","2": 1 1 1 1 1 1 1 1 1 1 ...

示例

data(morley)

str(morley)

输出结果

'data.frame': 100 obs. of 3 variables: $ Expt : int 1 1 1 1 1 1 1 1 1 1 ...

$ Run : int 1 2 3 4 5 6 7 8 9 10 ...

$ Speed: int 850 740 900 1070 930 850 950 980 980 880 ...

示例

morley$Expt<-as.factor(morley$Expt) str(morley)

输出结果

'data.frame': 100 obs. of 3 variables:

$ Expt : Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...

$ Run : int 1 2 3 4 5 6 7 8 9 10 ...

$ Speed: int 850 740 900 1070 930 850 950 980 980 880 ...

示例

x1<-sample(1:4,20,replace=TRUE) x2<-rnorm(20,2,3)

df<-data.frame(x1,x2)

str(df)

输出结果

'data.frame':20 obs. of 2 variables:

$ x1: int 1 4 1 2 3 1 4 1 4 2 ...

$ x2: num 1.56 1.64 2.83 2.2 4.23 ...

示例

df$x1<-as.factor(df$x1)

str(df)

输出结果

'data.frame': 20 obs. of 2 variables:

$ x1: Factor w/ 4 levels "1","2","3","4": 4 3 2 2 4 4 1 2 4 2 ...

$ x2: num 3.82 1.13 2.99 5.8 3.3 ...

示例

data(BOD)

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$Time<-as.factor(BOD$Time)

str(BOD)

输出结果

'data.frame': 6 obs. of 2 variables:

$ Time : Factor w/ 6 levels "1","2","3","4",..: 1 2 3 4 5 6

$ demand: num 8.3 10.3 19 16 15.6 19.8 - attr(*, "reference")= chr "A1.4, p. 270"

以上是 如何在R中将数值列转换为因子列? 的全部内容, 来源链接: utcz.com/z/327087.html

回到顶部