【发布时间】:2020-08-19 00:37:29
【问题描述】:
假设我有一个像这样的数据集:
example <- data.table(Object = rep(LETTERS[1:3], each=3), date = as.Date(rep(c(NA,NA,"2020-01-01"),3)), date_data =1:9)
example
Object date date_data
1: A <NA> 1
2: A <NA> 2
3: A 2020-01-01 3
4: B <NA> 4
5: B <NA> 5
6: B 2020-01-01 6
7: C <NA> 7
8: C <NA> 8
9: C 2020-01-01 9
我想将某个组内的所有 date_data 设置为该组的最后一个 date_data 值。所以,想要的输出是这样的:
Object date date_data
1: A <NA> 3
2: A <NA> 3
3: A 2020-01-01 3
4: B <NA> 6
5: B <NA> 6
6: B 2020-01-01 6
7: C <NA> 9
8: C <NA> 9
9: C 2020-01-01 9
现在,我已经成功地使用example[, date_data:= .SD[.N]$date_data, by = "Object"] 获得了我需要的东西。问题是我想在循环遍历大型数据表时进行这样的调用。 每次调用 .SD 太慢了。理想情况下,代码将使用 .I(如 here)或其他一些我不知道的 data.table 优化功能。我没有找到正确的方法来做到这一点。
有什么想法吗?
【问题讨论】:
标签: r performance data.table grouping