按组聚合并包括跨行的计数

时间:2016-04-20 19:44:08

标签: r aggregate

我有这个数据框:

YEAR   NATION    VOTE
2015     NOR        1
2015     USA        0
2015     CAN        1
2015     RUS        1
2014     USA        1
2014     USA        1
2014     USA        0
2014     NOR        1
2014     NOR        0
2014     CAN        1

......随着时间的推移,国家和选票越来越多。 VOTE是二进制,是(1)或否(0)。我正在尝试编写一个汇总年份和国家的输出表,但这也会带来每个国家的总票数(0和1和1的总和)以及总数1,在输出表格中,如下图所示(sumVOTES是该年度该国家/地区的总票数,即所有1和0的总和):

YEAR   NATION    VOTE-1   sumVOTES    %-1s
2015     USA          8         17    47.1
2015     NOR          7         13    53.8
2015     CAN          3         11    27.2
2014     etc.
etc.

1 个答案:

答案 0 :(得分:2)

您未在reproducible manner中提供data.frame。 但这应该有用......

library(data.table)
# assuming 'df' is your data.frame
setDT(df)[, .('VOTE-1' = sum(VOTE==1), 
              'sumVOTES' = .N, 
              '%-1s' = 1e2*sum(VOTE==1)/.N), 
 by = .(YEAR, NATION)]

setDT通过引用将data.frame转换为data.table。