作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数据来 self 正在研究的另一个问题:
dt <- data.table(user=c(rep(3, 5), rep(4, 5)),
country=c(rep(1,4),rep(2,6)),
event=1:10, key="user")
# user country event
#1: 3 1 1
#2: 3 1 2
#3: 3 1 3
#4: 3 1 4
#5: 3 2 5
#6: 4 2 6
#7: 4 2 7
#8: 4 2 8
#9: 4 2 9
#10: 4 2 10
这是令人惊讶的行为:
dt[user == 3, as.data.frame(table(country))]
# country Freq
#1 1 4
#2 2 1
dt[user == 4, as.data.frame(table(country))]
# country Freq
#1 2 5
dt[, as.data.frame(table(country)), by = user]
# user country Freq
#1: 3 1 4
#2: 3 2 1
#3: 4 1 5
# ^^^ - why is this 1 instead of 2?!
感谢 mnel 和 Victor K。自然的后续行动是 - 它不应该是 2,即这是一个错误吗?我以为
dt[, blah, by = user]
返回相同的结果给
rbind(dt[user == 3, blah], dt[user == 4, blah])
这个期望不正确吗?
最佳答案
惯用的 data.table 方法是使用 .N
dt[ , .N, by = list(user, country)]
这会快得多,而且它还会将国家保留为与原始类别相同的类别。
关于r - data.table 和表意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258020/
我是一名优秀的程序员,十分优秀!