我的表g是:

g
      ID     GROUP
1     123      A
2     656      A
3     456      A
4     123      A
5     456      B
6     789      A
7     453      B
8     123      C
9     720      D
10    456      E
11    453      A
12    863      F


我想知道每个ID有多少个唯一的GROUP。



我想得到如下输出。
x栏应该给我一些独特的GROUP

      ID       x
1    123       2      # as there are 2 unique GROUPs: A(twice) and C
2    453       2      # as it is B and A - 2 unique GROUPS
3    456       3      # as it is A, B, E
4    656       1      # as it is A
5    720       1      # as it is D
6    789       1      # as it is A
7    863       1      # as it is F


-------------------------------------------------- -------------------------

尝试解决以上问题的示例:

1。

agg<-aggregate(g$GROUP, by=list(ID=g$ID), unique)
agg
      ID        x
1    123     2, 6     # amount of digits in column x tells me how many GROUPs
2    453     1, 2     # are related to single ID.
3    456  2, 1, 4     # Numbers stand for: B  A  F  E  D  C
4    656        2                        # 1  2  3  4  5  6
5    720        5
6    789        2
7    863        3

agg$x
$`0`
[1] A C
Levels: B A F E D C
$`1`
[1] B A
...
...


2。

ggg <- aggregate(g$GROUP, by=list(ID=g$ID), paste, collapse=",")

     ID           x
1    123      A,A,C      # I want to count unique values (A,C)=2
2    453        B,A
3    456      A,B,E
4    656          A
5    720          D
6    789          A
7    863          F

最佳答案

table(unique(g)$ID)
#123 453 456 656 720 789 863
#  2   2   3   1   1   1   1


或者,

data.frame(table(unique(g)$ID))
#  Var1 Freq
#1  123    2
#2  453    2
#3  456    3
#4  656    1
#5  720    1
#6  789    1
#7  863    1

08-04 15:00