R 语言按行值减少数据框

R Language Reduce a Dataframe by Row Values

在 R 中我有以下数据框:

    badge_name year.month count
1      Teacher     2009-1  2161
2      Teacher     2009-2  2193
3      Teacher     2009-3  2163
4      Teacher     2009-4  2205
5      Teacher     2009-5  3004
6      Teacher     2009-6  2865
7      Teacher     2009-7  2936
8      Teacher     2009-8  2762
9      Teacher     2009-9  2433
10     Teacher    2009-10  3001
11     Teacher    2009-11  3650
12     Teacher    2009-12  3480
13     Student     2009-1  1980
14     Student     2009-2  1933
15     Student     2009-3  2197
16     Student     2009-4  2243
17     Student     2009-5  2725
18     Student     2009-6  2904
19     Student     2009-7  3069
20     Student     2009-8  3015
21     Student     2009-9  2839
22     Student    2009-10  3603
23     Student    2009-11  4208
24     Student    2009-12  4188
...

我想创建一个新的数据框,以便按年份折叠所有行并将计数加在一起。

    badge_name     year   count
1      Teacher     2009   32853
2      Student     2009   34904

我该怎么做?

假设您的 data.frame df。使用 dplyr

library(dplyr)

df %>% mutate(year = substr(year.month, 1, 4)) %>%
       group_by(badge_name, year) %>% 
       summarise(count = sum(count))

使用 base R,您可以执行以下操作:

df$year <- substr(df$year.month, 1, 4)
with(df, tapply(count, df[,c('badge_name', 'year')], sum))