簡體   English   中英

總結使用dplyr的分位數?

[英]Summarize to quantiles in using dplyr?

假設有人正在dplyr操作一個數據幀,並且希望將一個人的數據匯總到一個表格中,每個十分位數都包含一列。 拋開為什么要這樣做的問題,還有如何做的問題

之前已經指出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()

在那兒?

這可以做到:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM