我的目标是为给定的列建立分位数,然后根据这些五分位数为每一行分配适当的桶。
确定五分之一的数据很容易:
quantile(df$x, probs=seq(0,1,0.2),na.rm = TRUE)但是,对于如何使用函数而不是手动散列将此信息分配给每一行,我有点不知所措。我使用过apply和tapply,但还没有完全达到目的。类似这样的内容只会产生与上面相同的信息,但是引用特定的UID和桶中的其他列:
apply(df, 2, quantile, probs = c(0.2, 0.4, 0.6, 0.8, 1.0), na.rm = TRUE)发布于 2018-12-10 04:56:40
如果我理解你的意思,用虹膜样本数据:
q <- quantile(iris$Sepal.Length, probs=seq(0,1,0.2),na.rm = TRUE)得到五分位数。然后,您可以使用cut将观察分配给桶。
iris$qc <- cut(iris$Sepal.Length, q)
table(iris$qc)给你
(4.3,5] (5,5.6] (5.6,6.1] (6.1,6.52] (6.52,7.9]
31 33 30 25 30我想这就是你想要的。如果你想要的话,你可以改变名字,也可以随意选择。
https://stackoverflow.com/questions/53698691
复制相似问题