计算变量R上的变量

Car*_*rlo 1 r count

Tid <- c(1,1,2,2,2,3,4,4)
Uid <- c(10,10,11,11,12,13,10,14)

Data <- data.frame(Tid,Uid)
Run Code Online (Sandbox Code Playgroud)

我想知道每个Tid上有多少不同的Uid.我的结果应该是这样的.

Tid, freqUid 
1, 1
2, 2
3, 1
4, 2
Run Code Online (Sandbox Code Playgroud)

我试图在它上面使用count但是在一个变量上使用它有一些问题.

Dav*_*urg 9

基地R

as.data.frame(table(unique(Data)$Tid))
#   Var1 Freq
# 1    1    1
# 2    2    2
# 3    3    1
# 4    4    2
Run Code Online (Sandbox Code Playgroud)

或者(尽管列名信息量较少)

aggregate(Uid ~ Tid, unique(Data), length)
#   Tid Uid
# 1   1   1
# 2   2   2
# 3   3   1
# 4   4   2
Run Code Online (Sandbox Code Playgroud)

这里的基本思想是仅对独特的组合进行操作Tid/Uid,然后对不同的Tid实例进行计数


编辑:根据@nicolas评论,我们也可以在tapply这里添加一个可能的解决方案

as.data.frame.table(tapply(Data$Uid, Data$Tid, function(x) length(unique(x))))
#   Var1 Freq
# 1    1    1
# 2    2    2
# 3    3    1
# 4    4    2
Run Code Online (Sandbox Code Playgroud)