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个值的最常见组合的有效方法是什么?
非常感谢!
这是一种方法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),如果你真的在一行结果只是感兴趣.
| 归档时间: |
|
| 查看次数: |
4003 次 |
| 最近记录: |