【问题标题】:How do I aggregate certain columns from data frame by a Unique ID?如何通过唯一 ID 聚合数据框中的某些列?
【发布时间】:2018-11-13 01:28:15
【问题描述】:

我有一个 statcast 数据列表,可以追溯到 2016 年。我正在尝试汇总这些数据以找到每个投球 ID 的平均值。

我有以下代码:

aggpitch <- aggregate(pitchingstat, by=list(pitchingstat$PitcherID),
                  FUN=mean, na.rm = TRUE)

此函数聚合每一列。我希望只聚合一定数量的列。

如何只包含某些列?

【问题讨论】:

  • 您想指定一个要聚合的变量 - aggregate(pitchingstat[c("var1","var2")], pitchingstat["PitcherID"], FUN=mean, na.rm=TRUE) 。或者,使用公式接口 aggregate(cbind(var1,var2) ~ PitcherID, data=pitchingstat, FUN=mean, na.rm=TRUE) 。看到这个旧答案 - stackoverflow.com/a/9723314/496803

标签: r aggregate rscript


【解决方案1】:

如果你想总结不止一列,你可以使用 QAsena 的方法并像这样添加summarise_at 函数:

pitchingstat %>%
group_by(PitcherID) %>%
summarise_at(vars(col1:coln), mean, na.rm = TRUE)

查看下面的链接以获取更多示例: https://dplyr.tidyverse.org/reference/summarise_all.html

【讨论】:

    【解决方案2】:

    将第一个参数 (pitchingstat) 替换为您要聚合的列的名称(或其向量)

    【讨论】:

      【解决方案3】:

      怎么样?

      library(tidyverse)
      aggpitch <- pitchingstat %>% 
        group_by(PitcherID) %>% 
        summarise(pitcher_mean = mean(variable)) #replace 'variable' with your variable of interest here
      

      library(tidyverse)
      aggpitch <- pitchingstat %>%
        select(var_1, var_2)
        group_by(PitcherID) %>% 
        summarise(pitcher_mean = mean(var_1),
                  pitcher_mean2 = mean(var_2))
      

      我认为这可行,但可以使用您的数据的虚拟示例来玩。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-26
        • 1970-01-01
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多