簡體   English   中英

dplyr迭代所有列的分位數

[英]dplyr to iterate over all columns for quantile

我有以下R數據框:

           x        y        z
1 -0.5242428 598.7092 1099.503
2 -0.4303593 599.2725 1100.970
3  0.1151290 599.9294 1100.062
4  0.5442775 600.9277 1098.690
5  1.4880749 599.9780 1098.479
6  0.2283675 600.3660 1099.128

我想獲得每列的分位數,並認為dplyr是優雅的解決方案。 以下路線需要指定每一列,但這並不優雅。

> df %>% summarise(`25%`=quantile(x, probs=0.25),
+                  `50%`=quantile(x, probs=0.5),
+                  `75%`=quantile(x, probs=0.75))

我也試圖看看是否有可能使用fallowing:

df %>% mutate(quantile(., probs = c(0, 0.25, 0.5, 0.75, 1)))

我認為使用. 會告訴函數為所有列執行此操作,但我收到錯誤。

Error: undefined columns selected

什么是最好的解決方案

var        25%       50%       75%
x    -0.587382 0.1546231 0.9864742
y     599.2584 599.9998 600.6679
z      1099.31 1100.028 1100.704

我們可以嘗試

library(tidyverse)
df %>%
    summarise_all(funs(list(quantile(., probs = c(0.25, 0.5, 0.75))))) %>%
    unnest %>%
    transpose %>%
    setNames(., c('25%', '50%', '75%')) %>%
    map_df(unlist) %>%
    bind_cols(data.frame(vars = names(df)), .)

暫無
暫無

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

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