【发布时间】:2018-03-20 04:01:44
【问题描述】:
我一直在使用以下格式的dplyr代码
group_by(dt, ID) %>%
filter(any(colY == 1 & colX == 10))
像下面这样子集一个data.table
ID colX colY 1111 3 1 1111 2 1 1111 6 0 1111 9 0 2222 10 1 2222 3 1 2222 5 0 2222 7 0 3333 8 1 3333 10 1 3333 3 0 3333 2 0进入
ID colX colY 2222 10 1 2222 3 1 2222 5 0 2222 7 0 3333 8 1 3333 10 1 3333 3 0 3333 2 0过滤大约 900k 行得到第二个表大约需要 1.3 秒。
我一直在尝试实现一个更快的 data.table 子集,但到目前为止,结果只需要更长的时间。使用以下 data.table 子集
dt[ , .SD[any( (colY == 1 & colX == 10)) ], ID]
大约需要 14 秒。这里似乎有什么问题?
【问题讨论】:
-
, 10] 是您的
ID列位置吗?也许您会生成一些模拟数据,以便为您轻松地对现实解决方案进行基准测试。 -
抱歉应该按 ID 分组
标签: r data.table