我有一个 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 question 的 data.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/