首页 文章

使用dplyr总结分位数?

提问于
浏览
0

假设有人在 dplyr 中操作数据帧,并且想要将一个数据汇总到一个表中,每个十进制都有一列 . 撇开为什么会这样做的问题,仍然存在如何做的问题 .

一直是noted beforesummarize 不喜欢矢量值函数 . 正如那篇文章所提到的,最有文字意识的方法就是为每个十分位创建一个显式列:

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 回答

  • 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
    

相关问题