我在data.table中遇到条件语句问题。
我的DF由与不同ID相关联的不同日期组成。我希望得到每个id的最大日期。但是:
编辑:这是DF,抱歉:
df <- data.frame(id=c(1,1,1,1,2,3,3,3,4,5,5,5,5),
date=c("2016-01-21", "2016-01-13", NA, "2016-01-13",
"2016-01-13", "2016-01-13", "2016-02-02", "2016-01-25", NA,
"2016-01-25", "2016-01-25", "2016-01-25", "2016-01-25"))
如果我不包含ifelse功能,data.table会给我一个警告,因为ID 4的单个NA在过程中已被删除
agg <- setDT(df)[,
.SD[,
.(max_date=max(as.Date(date), na.rm=TRUE))
],
by=.(id)
]
警告消息:在max.default中(NA_real_,na.rm = TRUE):否 max的非缺失参数;返回-Inf
此警告在?max
对于min和max,如果只有数字输入且全部为空 (在可能删除NA之后),结果是double(Inf或-Inf)。
如果我用条件处理这个问题,我会收到一个错误:
agg <- setDT(df)[,
.SD[,
.(max_date=ifelse(
(is.na(as.Date(date)) & .N == 1),
max(as.Date(date), na.rm=TRUE),
NA))
],
by=.(id)
]
[.data.table
中的错误(setDT(df),,。SD [,。(max_date = ifelse((is.na(as.Date(date))&amp ;:第4组结果的第1列是 键入&#39; double&#39;但期待类型“逻辑”#。列类型必须是 每组都一致。另外:警告信息:在 max.default(NA_real_,na.rm = TRUE):没有非缺失参数 最大;返回-Inf
所以我的问题是双重的:
由于