R语言中的numeric数据归类 ,cut函数的应用

使用背景

我们时常需要对数值型数据进行归类,如我们收集收入时往往需要给出最直观的变量来告知我们这个值的收入是高、低还是中等。当然我们可以通过一系列函数来实现这个目的,但是cut函数是在R里最适合这类情况的。


函数介绍

cut函数中的变量,最常用的便是labels & names。

例子:

income<- as.vector(c(1000,2000,3000,4000,5000,8000,9500,12000,5000,2300,30000))
age<- c(20,18,23,22,30,44,23,33,30,29,40)
data<-data.frame(age,income)
data

这是初始data,结果为:

> data
   age income
1   20   1000
2   18   2000
3   23   3000
4   22   4000
5   30   5000
6   44   8000
7   23   9500
8   33  12000
9   30   5000
10  29   2300
11  40  30000

如果希望加一列column来将income分类为 low,medium以及high,标准为income<=3000定义为low, 3000<income<=8000为medium, income>8000为high,我们可以使用which(data$[,2]>8000)类似的code来归类,但是很麻烦,cut函数完美解决了这个问题。

data[,'income.level']<- cut(data$income,breaks=c(-Inf,3000,8000,Inf),labels=c('low','medium','high'))

输出结果为:

> data
   age income income.level
1   20   1000          low
2   18   2000          low
3   23   3000          low
4   22   4000       medium
5   30   5000       medium
6   44   8000       medium
7   23   9500         high
8   33  12000         high
9   30   5000       medium
10  29   2300          low
11  40  30000         high

breaks里面设计的是‘分段点’,labels里面的是每个区间内的命名。大家如果希望R自动来分段,可以写成breaks=n(希望分成多少段,对应的labels的数量也应该为n)。BTW,对于不再区间内的变量,R会自动输出为NA,并不会报错,有兴趣大家可以自己去试一下。

总结

对数值型数据进行分类,cut是一个比较合适的function,大家可以多练习尝试!


猜你喜欢

转载自blog.csdn.net/clintlong/article/details/80833268