我有一组数据,如下所示:
annual_exp<-as.data.frame(c(6000,4200,240001,750,20000,3470,10500,2400,2280,36000,3600,20000,2000,12000,1200,3000,4500,64000))
annual_exp<-as.data.frame(annual_exp)
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的变量,称之为"五分之一",它为每个观察分配1到5之间的整数,包括它们,取决于它们属于哪个五分之一的收入支出(annual_exp).所以应该有相同数量的1到5.
到目前为止,我的尝试是做以下事情:
test<-quantile(annual_exp$annual_exp, probs= seq(0,1,0.2), na.rm=TRUE)
summary(test)
test
breaks<-c(test[1],test[2],test[3],test[4],test[5],test[6])
quantiles<-cut(annual_exp$annual_exp, breaks, labels=c("1","2","3","4","5"), include.lowest=TRUE, right=TRUE)
quantiles<-as.data.frame(quantiles)
quantiles<-cbind(annual_exp, quantiles)
Run Code Online (Sandbox Code Playgroud)
这个问题(在这个例子中创建的这么小的样本并没有真正表现出来)是,通过这样做落入每个分位数的人数变化很大.这是因为我使用了上面的"分位数"功能.
因此,我正在寻找方程式的"分位数"部分的替代方案,该方程式将根据年度支出将样本分成5组相等的五分位数.
任何有关这方面的帮助将非常感谢!
Jos*_*ien 11
ggplot2有一个很好的实用功能,cut_number()它可以满足您的需求.
library(ggplot2)
as.numeric(cut_number(annual_exp[[1]], n = 5))
# [1] 3 3 5 1 4 2 4 2 1 5 3 4 1 4 1 2 3 5
Run Code Online (Sandbox Code Playgroud)