我在R中获得了如下所示的数据框:
> df
c1 c2 c3
1: 10 c1 i1
2: 10 c1 i2
3: 10 c1 i3
4: 10 c2 i1
5: 10 c2 i2
6: 10 c2 i3
7: 20 c11 i1
8: 20 c11 i2
9: 20 c11 i3
10: 20 c12 i1
11: 20 c12 i2
12: 20 c12 i3
我需要用c1对c2和c3列的不同计数进行求和 - 得到以下结果:
10 2 3
20 2 3
我如何在R中完成这项工作?
由于
答案 0 :(得分:3)
使用base R
aggregate
aggregate(cbind(c2,c3)~c1, df, function(x) length(unique(x)))
# c1 c2 c3
#1 10 2 3
#2 20 2 3
答案 1 :(得分:1)
由于OP的数据集看起来像data.table
,我们可以使用data.table
方法。将'data.frame'转换为'data.table'(setDT(df1)
- 如果它是'data.frame'),按'c1'分组,我们循环遍历Data.table的子集({{1 }}并找到.SD
个length
元素(unique
)。
uniqueN