在data.frame中查找最常见的值组合

Rob*_*ob 6 combinations r dataframe

我想在data.frame中找到最常见的值组合.

这是一些示例数据:

dat <- data.frame(age=c(50,55,60,50,55),sex=c(1,1,1,0,1),bmi=c(20,25,30,20,25))
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我要找的结果是age = 55,sex = 1和bmi = 25的组合,因为这是列值的最常见组合.

我的真实数据有大约30000行和20列.在30000个观测值中找到这20个值的最常见组合的有效方法是什么?

非常感谢!

A5C*_*2T1 8

这是一种方法data.table:

dt <- data.table(dat)
setkeyv(dt, names(dt))
dt[, .N, by = key(dt)]
dt[, .N, by = key(dt)][N == max(N)]
#    age sex bmi N
# 1:  55   1  25 2
Run Code Online (Sandbox Code Playgroud)

基础R的方法:

x <- data.frame(table(dat))
x[x$Freq == max(x$Freq), ]
#    age sex bmi Freq
# 11  55   1  25    2
Run Code Online (Sandbox Code Playgroud)

我不知道这些规模有多好,特别是如果组合的数量会很大.所以,测试回来并报告!


更换x$Freq == max(x$Freq)which.max(x$Freq)N == max(N)which.max(N),如果你真的在一行结果只是感兴趣.