[英]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),
...)
這顯然是不道德的。 然而,對鏈接的問題而言,如何立即使用ddply
或do
來實現此目標對我來說還不是很明顯。 感覺就像應該采用一種“整潔”的方式來做到這一點,大致如下:
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.