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)
我想知道每个Tid上有多少个不同的Uid。 我的结果应该是这样的。
Tid, freqUid 1, 1 2, 2 3, 1 4, 2
我尝试对它使用 count ,但在多个变量上使用它时遇到了一些问题。
带底座R
as.data.frame(table(unique(Data)$Tid)) # Var1 Freq # 1 1 1 # 2 2 2 # 3 3 1 # 4 4 2
或者(尽管列名信息量较少)
aggregate(Uid ~ Tid, unique(Data), length) # Tid Uid # 1 1 1 # 2 2 2 # 3 3 1 # 4 4 2
这里的基本思想是仅对以下的独特组合进行操作Tid/Uid然后数出不同的Tid实例
Tid/Uid
Tid
编辑: 根据 @nicolas 评论,我们可以添加tapply也在这里作为一个可能的解决方案
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