总结使用dplyr的分位数吗?

时间:2018-07-28 22:42:22

标签: r dplyr

假设一个人正在操纵dplyr中的一个数据帧,并且一个人希望将一个人的数据汇总到一个表格中,每个十分位数都包含一列。抛开为什么的问题会这样做,剩下的是如何做的问题。

noted before summarize不喜欢矢量值函数。如该帖所述,最直觉的方法是为每个十分位创建一个显式列:

df <- data.frame(value=rnorm(1000)) %>%
    summarize(`0.1` = quantile(value, 0.1),
              `0.2` = quantile(value, 0.2), 
              `0.3` = quantile(value, 0.3),
              ...)

这显然是邪恶的。然而,对于链接问题中提到的如何使用ddplydo来实现此目标,对我来说,现在还不是很明显。而且感觉就像应该采用一种“整洁”的方式来做到这一点,大致如下:

df <- data.frame(value=rnorm(1000)) %>%
    summarize(quantiles = quantile(value, seq(0.1, 0.9, 0.1))) %>%
    expand_vector_to_columns()

在吗?

1 个答案:

答案 0 :(得分:1)

这可以做到:

df <- data.frame(value=rnorm(1000))  %>%
unlist  %>% 
quantile(seq(.1, .9, .1)) %>% 
matrix(., 1,9, dimnames=list(NULL, names(.)))  %>%
as.data.frame(., col.names=colnames(.))
#df
#     10%     20%     30%     40%    50%    60%    70%    80%   90%
#1 -1.275 -0.8528 -0.5258 -0.2353 0.0303 0.3051 0.5732 0.8918 1.278