代码之家  ›  专栏  ›  技术社区  ›  Alexander

R语言按行值减少数据帧

  •  0
  • Alexander  · 技术社区  · 6 年前

    在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
    

    我该怎么做呢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mankind_2000    6 年前

    假设您的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))