在R中查找每个因子的唯一变量的数量

时间:2014-08-18 18:27:06

标签: r unique

我有一个如下所示的数据框:

id <- c(1,2,3,4,5,6,7,8,9,10)
val <- c("a", "b", "c", "a", "b", "a", "c", "a", "a", "c")
df <- data.frame(id,val)

我正在尝试创建一个长度为10的向量,对于每个id,它给出df中具有相同值val的行数。输出应为

out <- c(5, 2, 3, 5, 2, 5, 3, 5, 5, 3)

它基本上与

相反
with(df, tapply(val, id, function(x) length(unique(x))))

如果这有道理?也许我可以用df以某种方式合并(df,tapply(id,val,function(x)length(unique(x)))),但这似乎是一个非常难看的解决方案。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

table(df$val)[df$val]

答案 1 :(得分:0)

ave函数适用于此

之类的任务
cc<-with(df, ave(id,val, FUN=length))
cbind(df, cc)

将导致

id val cc
1   1   a  5
2   2   b  2
3   3   c  3
4   4   a  5
5   5   b  2
6   6   a  5
7   7   c  3
8   8   a  5
9   9   a  5
10 10   c  3