【发布时间】:2014-05-19 00:07:49
【问题描述】:
我正在尝试使用 data.table 标记每个 ID 的最大和最小观察日期。虽然我认为这将是一个直接的练习,但我真的不明白为什么我没有得到我希望的结果:出于某种原因,以下 data.table 命令仅标记整体最小值和最大值,而不是“每个 ID”,即使表明了这一点:
可重现的示例(通过 ID 标记最大值):
library(data.table)
date1 = as.POSIXct(Sys.Date(), "%m-%d-%Y-%X")
date2 = date1 - 70000
date3 = date1 - 7000
date4 = date1 + 90000
DT = data.table(ID= rep(1:2,each = 3), Date=c(date1,date2,date3,date4,date1,date2))
# create position marker (2 means middle value for date - not min/not max)
DT[,Position:=2]
# change position marker to 3 if latest date
DT[Date==max(Date),Position:=3, by=ID]
为什么 data.table 不考虑“by=ID”部分?我忽略了什么?
版本: 数据表 1.9.2 R:3.0.3
【问题讨论】:
-
我认为它先过滤数据,然后执行
by语句
标签: r data.table