在R上有什么方法可以把行合并起来做一个总平均数吗?

问题描述 投票:0回答:1

我有一个大的df,看起来像这样。

Name      Year    Runs   Average
J. Doe    2016    432    44.5
J. Doe    2017    325    37.4
J. Bloggs 2016    289    54.3

我想把行合并起来,这样我就可以为每个名字做一个总和,而不是按年份分开。有些列如Runs需要求和,有些列如Average需要其他列的公式。df太大了,我无法手动完成,那么有没有一个函数可以让我在有重复名字的时候将这些行合并起来?

r concatenation rows
1个回答
4
投票

你可以使用 dplyr:

library(dplyr)
df %>% 
  group_by(Name) %>% 
  summarise(sum_of_runs = sum(Runs),
            average_of_column_x = mean(column_x, na.rm = TRUE))

0
投票

如果你想 sum Runs 纵横 meanAverage 列中的每一个独特的值。 Name,使用 data.table 你可以做:

library(data.table)
setDT(df)[, .(Runs = sum(Runs), Avg = mean(Average)), Name]

#       Name Runs  Avg
#1:    J.Doe  757 41.0
#2: J.Bloggs  289 54.3

添加 na.rm = TRUEsummean 功能,如果您有 NA 值。

数据

df <- structure(list(Name = c("J.Doe", "J.Doe", "J.Bloggs"), Year = c(2016L, 
2017L, 2016L), Runs = c(432L, 325L, 289L), Average = c(44.5, 
37.4, 54.3)), class = "data.frame", row.names = c(NA, -3L))
© www.soinside.com 2019 - 2024. All rights reserved.