簡體   English   中英

計算分組數據框中行的中位數

[英]Calculate medians of rows in a grouped dataframe

我有一個數據框,每周包含多個條目。 看起來像這樣:

Week t_10 t_15 t_18 t_20 t_25 t_30
1 51.4 37.8 25.6 19.7 11.9  5.6
2 51.9 37.8 25.8 20.4 12.3  6.2
2 52.4 38.5 26.2 20.5 12.3  6.1
3 52.2 38.6 26.1 20.4 12.4  5.9
4 52.2 38.3 26.1 20.2 12.1  5.9
4 52.7 38.4 25.8 20.0 12.1  5.9
4 51.1 37.8 25.7 20.0 12.2  6.0
4 51.9 38.0 26.0 19.8 12.0  5.8

這些周的條目數量不同,范圍從一周的一個條目到一周的多個(最多4個)條目。 我想計算每個星期的中位數,並在新數據框中將其用於所有不同變量(從t_10到t_30)。 在原始數據幀中已經省略了NA單元。 我已經通過plyr包的ddply函數嘗試了不同的方法,但到目前為止沒有任何效果。

我們可以對多個列使用summarise_at

library(dplyr)
colsToKeep <- c("t_10", "t_30")
df1 %>%
   group_by(Week) %>%
   summarise_at(vars(colsToKeep), median) 
# A tibble: 4 x 3
#   Week  t_10  t_30
#  <int> <dbl> <dbl>
#1     1 51.40  5.60
#2     2 52.15  6.15
#3     3 52.20  5.90
#4     4 52.05  5.90

指定變量以保留在colsToKeep並將輸入表存儲在d

library(tidyverse)
colsToKeep <- c("t_10", "t_30")
gather(d, variable, value, -Week) %>%
    filter(variable %in% colsToKeep) %>%
    group_by(Week, variable) %>%
    summarise(median = median(value))

# A tibble: 8 x 3
# Groups:   Week [4]
   Week variable median
  <int>    <chr>  <dbl>
1     1     t_10  51.40
2     1     t_30   5.60
3     2     t_10  52.15
4     2     t_30   6.15
5     3     t_10  52.20
6     3     t_30   5.90
7     4     t_10  52.05
8     4     t_30   5.90

您還可以使用聚合函數:

   newdf <- aggregate(data = df, Week ~ . , median)

暫無
暫無

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

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