什么是用于查找每个id最常见类别的高效优雅的data.table语法?我保留一个布尔向量,用于指示NA位置(用于其他目的)。
在这个玩具示例中,忽略NA,
dt = data.table(id=rep(1:2,7), category=c("x","y",NA))
print(dt)
在这个玩具示例中,忽略NA,
x
是id==1
的常见类别,而y
是id ==2
的常见类别。
dt[!is.na(category)][, .N, by=.(id, category)][order(-N)][.(unique(dt$id)), on=.(id), .SD[1L], by=id]
或者只是给非NAs优先排序:dt[, .N, by=.(id, category)][order(is.na(category), -N), .SD[1L], by=id]
- Frank