我需要将十进制分配给分布,但是以整数的形式。 像1应该对应于第一个十分位数,2对应于第二个十分位数,3对应于第三个...... 目前我正在使用以下代码,但这些代码并没有完全符合我的要求。
cut(x, breaks = quantile(data, probs = seq(0, 1, 0.1)))
所以,而不是这种结果:
(0,100] (100,200]
我希望有类似的东西:
1 90
2 130
2 150
3 230
有没有人有这方面的代码?
答案 0 :(得分:3)
您可以使用labels
cut
参数
x2 <- cut(x, breaks = quantile(x, probs = seq(0, 1, 0.1)),
labels = 1:10, include.lowest = TRUE)
这将返回一个因素。运行
as.numeric(as.character(x2))
将其转换为整数(是的,我知道在这种特殊情况下,as.character是多余的)。
答案 1 :(得分:1)
如果您正在使用data.frame.
,则可以执行以下操作:
df$decile <- cut(df$x, breaks= quantile(df$x, probs= seq(0, 1, by= 0.1)),
include.lowest= TRUE,
labels= c(1:10))
如果您想使用data.table
方法
library(data.table)
setDT(df)[, decile := cut(x, breaks= quantile(x, probs= seq(0, 1, by= 0.1)),
include.lowest= TRUE,
labels= c(1:10)) ]