计算另一列中特定值的一列中的唯一值,

use*_*922 1 r

我有一个关于账单的数据框,其中包含(以及其他变量)"年"列,"发行"列和"子问题"列.简化示例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
Run Code Online (Sandbox Code Playgroud)

等等,大约60年.我想计算每年的问题和子问题列中的唯一值,并使用它们来创建新的df-dat2.使用上面的df,dat2看起来像这样:

year   issues    sub issues
1970    3        4
1971    4        4
Run Code Online (Sandbox Code Playgroud)

厌倦了各种因素,我确认所有列中的值都是整数,如果这会产生影响.我是R的新人(显然),我无法在网上找到这个特定目的的相关代码.谢谢你的帮助!!

Jea*_*lie 5

这是一个单行,有aggregate:

with(d,aggregate(cbind(issue,subissue) ~ year,FUN=function(x){length(unique(x))}))
Run Code Online (Sandbox Code Playgroud)

返回:

  year issue subissue
1 1970     3        4
2 1971     4        4
Run Code Online (Sandbox Code Playgroud)