r - 从 R 表的多列中选择频繁值

标签 r data.table

我有一个 data.table res 其数据如下:

            V1 V2 V3 V4
  1:     Day_1  4  4  4
  2:     Day_2  1  1  2
  3:     Day_3  4  5  4
  4:     Day_4  3  4  4
  5:     Day_5  3  2  3

我需要从组合的 V2、V3 和 V4 列中选择最频繁的值。也就是说,我需要按如下方式选择结果:
Day_1 4
Day_2 1
Day_3 4
Day_4 4
Day_5 3

我不希望有任何联系,因为列数总是奇数。是否可以操纵 data.table 来做到这一点?或者我应该修改它一些其他数据类型?

谢谢-V

最佳答案

我将此作为 this old questiondata.table 版本发布,直到提供更好的东西

Mode <- function(x) {
  ux <- unique(x)  
  ux[which.max(tabulate(match(x, ux)))]
}

DT[, .(res = Mode(unlist(.SD))), by = V1]

#       V1 res
# 1: Day_1   4
# 2: Day_2   1
# 3: Day_3   4
# 4: Day_4   4
# 5: Day_5   3

关于r - 从 R 表的多列中选择频繁值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002695/

相关文章:

r - 表格中的背景减法

r - 按列模式和绑定(bind)行拆分 data.frame R

r - 如何在ggplot中为平滑线设置alpha

R- 两个列表中元素的所有成对组合

r - 查找大于列表中每个元素的最小值

r - 自事件重复发生以来累计经过的天数(按组)

r - 根据另一列中的值和分组创建一个新的 r data.table 列

r - 使用 Quanteda 实现朴素贝叶斯进行文本分类

r - 在R列表中的每个元素中添加新值?

r - data.table 中的笛卡尔连接