R-如何对df中的每一列求和

时间:2019-05-12 19:44:03

标签: r

我有这个df

df <- read.table(text="
   id     month  gas  tickets
   1      1      13   14
   2      1      12   1
   1      2      4    5
   3      1      5    7
   1      3      0    9
", header=TRUE)

我想做的是计算每个月的汽油,机票(以及我的实际df中另外50多行)的总和。通常我会做类似的事情

result <-
 df %>%
 group_by(month) %>%
 summarise(
   gas = sum(gas),
   tickets = sum(tickets)
 ) %>%
 ungroup()

但是由于我的数据框中确实有很多列,所以我不想为每列创建求和函数而重复自己。我想知道是否有可能创建一些更精美的功能-或将创建除id和month分组后的month列以外的每个列的总和的函数。

2 个答案:

答案 0 :(得分:2)

您可以使用summarise_at()忽略id并求和:

df %>%
  group_by(month) %>%
  summarise_at(vars(-id), list(sum = ~sum))

# A tibble: 3 x 3
  month gas_sum tickets_sum
  <int>   <int>       <int>
1     1      30          22
2     2       4           5
3     3       0           9

答案 1 :(得分:1)

您可以使用aggregate作为注释中推荐的标记。如果您想坚持tidyverse,可以尝试这样的事情:

df %>% 
    select(-id) %>% 
    group_by(month) %>% 
    summarise_if(is.numeric, sum)

#### OUTPUT ####

# A tibble: 3 x 3
  month   gas tickets
  <fct> <int>   <int>
1 1        30      22
2 2         4       5
3 3         0       9