R - 用数字创建一个分类变量

时间:2016-06-04 20:06:40

标签: r matrix cut

我有一个包含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比较这些间隔)

1 个答案:

答案 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()函数。