我的帐单上有一个数据框,其中(除其他变量外)有一个“年”列,一个“问题”列和一个“次级问题”列。 df的简化示例如下所示:

year   issue   sub issue
1970   4       20
1970   3       21
1970   4       22
1970   2       8
1971   5       31
1971   4       22
1971   9       10
1971   3       21
1971   4       22

等等,大约60年了。我想计算每年的“问题”和“子问题”列中的唯一值,然后使用这些值来创建新的dfdat2。使用上面的df,dat2将如下所示:
year   issues    sub issues
1970    3        4
1971    4        4

厌倦了因素,我确认所有列中的值都是整数,如果有区别的话。我是R的新手(显然),但我无法在线找到针对此特定目的的相关代码。谢谢你的帮助!!

最佳答案

这是一个单行代码,带有aggregate:

with(d,aggregate(cbind(issue,subissue) ~ year,FUN=function(x){length(unique(x))}))

返回:
  year issue subissue
1 1970     3        4
2 1971     4        4

07-25 22:50