我有一个包含12列的data.frame。它们都不是分类变量。但是,我想在第一列中创建一个分类变量(在我的情况下是价格),并将数据分成这四个类别。
我最初是将csvfile转换为data.frame
接下来我开始在一列之后订购数字(我希望将分类变量分为“低”,“中”,“高”,“非常高”)
new <- old[order(old$price),]
接下来,我使用剪切功能将这一列剪切成4个间隔。
prices.new <- cut(new$price, breaks=4, labels=c("low","medium","high","very high"))
现在我想用prices.new替换旧的$ price列。
new1 <- new[replace(new$price, prices.new)]
然而,它总是告诉我价值缺失。
我也看到了一个问题,因为我不知道其他值在此之后是否仍然具有可比性。 (我希望之后用ANOVA比较这些间隔)
答案 0 :(得分:0)
dplyr
有一个很好的函数ntile()
可以帮助解决这个问题。例如,如果您有一个名为data.frame
的{{1}}:
myData
应该做的伎俩。注意,可能有更有效的方法来做到这一点,但我认为这将是可读的并且得到重点。关键是library(dplyr)
price<-runif(20,0,100)
data1<-rnorm(20)
data2<-rpois(20,2)
myData<-data.frame(price, data1, data2)
myData$price.bin<-ntile(myData$price, 4)
## because you are looking for 4 bins.
myData$price.bin<-sapply(myData$price.bin, function(x)
if (x == 1) "low"
else if (x == 2) "medium"
else if (x == 3) "high"
else if (x == 4) "very high")
包中的ntile()
函数。