我有一个data.table
事件记录,例如用户 ID、居住国家和事件。例如,
dt <- data.table(user=c(rep(3, 5), rep(4, 5)),
country=c(rep(1,4),rep(2,6)),
event=1:10, key="user")
如您所见,数据有些损坏:事件 5 报告用户 3 在国家 2 中(或者他可能旅行过——这对我来说无关紧要)。所以当我尝试总结数据时:
dt[, country[.N] , by=user]
user V1
1: 3 2
2: 4 2
我为用户 3 获取了错误的国家/地区。理想情况下,我想为用户获取最常见的国家/地区以及他在那里度过的时间百分比:
user country support
1: 3 1 0.8
2: 4 2 1.0
我怎么做?
实际数据有 ~10^7 行,因此解决方案必须扩展(这就是我使用的原因data.table
,而不是data.frame
毕竟)。