我有这个数据框:
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.
答案 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。