将连续范围更改为R中的分类

时间:2015-03-24 14:35:53

标签: r continuous categorical-data

我试图将一些连续的整数转换为分类范围,但我不明白的事情发生了。虽然我修好了得到我想要的东西,但我仍然不明白为什么会这样。

变量是0到12之间的一些整数,以下代码从10类别中留下11125+

py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==0]<-"0"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==1]<-"1"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==2]<-"2"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==3]<-"3"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==4]<-"4"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
py2$Daily.Whole.Grain<-as.factor(py2$Daily.Whole.Grain)

但是,当我更改转化顺序时,它包含101112

py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==0]<-"0"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==1]<-"1"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==2]<-"2"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==3]<-"3"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain==4]<-"4"

任何人都可以解释一下,为什么它会留下两位数的整数? 非常感谢。

1 个答案:

答案 0 :(得分:1)

正如@CathG所提到的,问题是由于将列从numeric类转换为character。这可能是一个更好的解决方案,使用cut函数,它将根据变量的切点给出因子:

py2 <- data.frame(Daily.Whole.Grain = 1:10)
py2$Daily.Whole.Grain1 <- cut(py2$Daily.Whole.Grain, 
    breaks = c(1:5, Inf), right = FALSE, labels = c(1:4, "5+"))
py2
   Daily.Whole.Grain Daily.Whole.Grain1
1                  1                  1
2                  2                  2
3                  3                  3
4                  4                  4
5                  5                 5+
6                  6                 5+
7                  7                 5+
8                  8                 5+
9                  9                 5+
10                10                 5+