r - R中的多数票

标签 r

我需要计算 R 中某个项目的多数票,但我不知道如何解决这个问题。

我有一个包含项目和指定类别的数据框。我需要的是最常分配的类别。我该怎么做呢?

数据框:

item   category
1      2
1      3
1      2
1      2
2      2
2      3
2      1
2      1

结果应该是:
item   majority_vote
1      2
2      1

最佳答案

你可以在这里使用两件事。首先,这是获得向量中最频繁项的方法:

> v = c(1,1,1,2,2)
> names(which.max(table(v)))
[1] "1"

这是一个字符值,但如果需要,我们可以轻松地将其添加为 as.numeric。

一旦我们知道如何做到这一点,我们就可以使用 data.table 包的分组功能对其最常见的类别进行逐项评估。这是上面示例的代码:
> dt = data.table(item=c(1,1,1,1,2,2,2,2), category=c(2,3,2,2,2,3,1,1))
> dt
   item category
1:    1        2
2:    1        3
3:    1        2
4:    1        2
5:    2        2
6:    2        3
7:    2        1
8:    2        1
> dt[,as.numeric(names(which.max(table(category)))),by=item]
   item V1
1:    1  2
2:    2  1

新的 V1 列包含每个项目最常见类别的数字版本。如果你想给它一个合适的名字,语法有点难看:
> dt[,list(mostFreqCat=as.numeric(names(which.max(table(category))))),by=item]
   item mostFreqCat
1:    1           2
2:    2           1

关于r - R中的多数票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201765/

相关文章:

r - 找到 x 连续响应的点

r - 使用 R 从网页中提取链接

r - 根据R中的逗号拆分字符串

r - 什么影响使用并行包创建集群的时间?

r - 使用aggregate.data.frame函数汇总r data.frame中的数据

r - 如何自动识别R中的公式?

r - R中%>%是什么意思

R:通过设置其其他参数将具有多个参数的函数作为一个参数之一传递给另一个函数

r - 从 R 解释器编译 Fortran 代码

r - R中矩阵列与向量元素相乘的最快方法