我想分配代表分位数的因子。因此我需要它们是数字的。这就是我编写以下函数的原因,这基本上是我问题的答案:
qdum <- function(v,q){
qd = quantile(v,1:(q)/q)
v = as.data.frame(v)
v$b = 0
names(v) <- c("a","b")
i=1
for (i in 1:q){
if(i == 1)
v$b[ v$a < qd[1]] = 1
else
v$b[v$a > qd[i-1] & v$a <= qd[i]] = i
}
all = list(qd,v)
return(all)
}
你现在可以笑了:)。返回的列表包含一个变量,该变量可用于将每个观察值分配给其相应的分位数。我现在的问题是:有没有更好的方法(更“原生”或“核心”)来做到这一点?我知道 quantcut(来自 gtools 包),但至少根据我得到的参数,我最终只得到了那些不方便的(? - 至少对我而言)阈值。
感谢任何有助于变得更好的反馈!