我的目标是为给定的列建立分位数,然后根据这些五分位数为每一行分配适当的存储桶。
确定五分位数的数据很容易:
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)
答案 0 :(得分:1)
如果我理解您的意思,请使用虹膜样本数据:
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
我想这就是您想要的。您可以根据需要更改名称,也可以使用选项。