我的帐单上有一个数据框,其中(除其他变量外)有一个“年”列,一个“问题”列和一个“次级问题”列。 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