R 通过变量选择最常用的元素

R 通过变量选择最常用的元素,r,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=c(1,2,3) ans=c(1,3,4) d.out=cbind(id,ans) 如何根据ID选择最频繁的答案 我想返回如下所示的数据帧: 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=c(1,2,3) ans=c(1,3,4) d.

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

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=c(1,2,3)
ans=c(1,3,4)
d.out=cbind(id,ans)
如何根据ID选择最频繁的答案

我想返回如下所示的数据帧:

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=c(1,2,3)
ans=c(1,3,4)
d.out=cbind(id,ans)
这个怎么样

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
res这个怎么样

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

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

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

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

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