【问题标题】:Calculating yearly sums and mean in R [duplicate]计算R中的年度总和和平均值[重复]
【发布时间】:2020-12-30 17:27:35
【问题描述】:

我有一个类似的 df,我想计算它的年度总和和平均值。有没有更快更聪明的方法来获得完全相同的输出?尤其是计算平均值感觉很笨拙。我尝试使用mean(),但没有成功。

a <- 1:10
b <- 5:14
c <- 36:45
d <- 22:31
year <- rep(2010:2014, 2)

df <- data.frame(a,b,c,d, year)

df[2,c(1,3,4)] <- NA
df[5,c(1,4)] <- NA
df[8,c(1,2)] <- NA


df_sums <- df %>% select(a, b, c, d, year) %>%
  group_by(year) %>%
  summarise(a_sum=sum(a, na.rm = T),
            b_sum=sum(b, na.rm = T),
            c_sum=sum(c, na.rm = T),
            d_sum=sum(d, na.rm = T),
            mean=(a_sum +
                  b_sum +
                  c_sum +
                  d_sum)/4)

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用across 按组计算各个列的sum。要计算平均值,您可以对选定的列使用rowMeans

    library(dplyr)
    
    df %>%
      group_by(year) %>%
      summarise(across(a:d, sum, na.rm = TRUE)) %>%
      ungroup %>%
      mutate(mean = rowMeans(select(., a:d), na.rm = TRUE))
    
    #   year     a     b     c     d  mean
    #  <int> <int> <int> <int> <int> <dbl>
    #1  2010     7    15    77    49  37  
    #2  2011     7    17    42    28  23.5
    #3  2012     3     7    81    53  36  
    #4  2013    13    21    83    55  43  
    #5  2014    10    23    85    31  37.2
    

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      相关资源
      最近更新 更多