按变量选择最常见的元素

时间:2015-03-06 21:21:42

标签: r

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

id=c(1,1,1,2,2,3,3,3,3)
ans=c(1,1,3,3,3,4,3,1,4)
d=cbind(id,ans)

如何为每个ID选择最常用的答案?

我想返回一个如下所示的数据框:

id=c(1,2,3)
ans=c(1,3,4)
d.out=cbind(id,ans)

2 个答案:

答案 0 :(得分:3)

这个怎么样?

res <- sapply(split(ans, id), function(x) names(sort(table(x),decreasing=TRUE)[1]))
data.frame(id = names(res), ans = res)
  id ans
1  1   1
2  2   3
3  3   4

答案 1 :(得分:3)

您需要一个双向表,然后找到每行中的最大数量:

tab <- table(id, ans)
data.frame(id=rownames(tab), ans=colnames(tab)[max.col(tab)])