我试图将一些连续的整数转换为分类范围,但我不明白的事情发生了。虽然我修好了得到我想要的东西,但我仍然不明白为什么会这样。
变量是0到12之间的一些整数,以下代码从10
类别中留下11
,12
,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"
py2$Daily.Whole.Grain[py2$Daily.Whole.Grain>=5]<-"5+"
py2$Daily.Whole.Grain<-as.factor(py2$Daily.Whole.Grain)
但是,当我更改转化顺序时,它包含10
,11
,12
。
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"
任何人都可以解释一下,为什么它会留下两位数的整数? 非常感谢。
答案 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+