【发布时间】:2020-11-28 16:27:48
【问题描述】:
我有以下data.table:
require(data.table)
dt = data.table(
id = c(rep('Grp 1', 31), rep('Grp 2', 31)),
date = rep(as.IDate(as.IDate('2020-01-01') : as.IDate('2020-01-31')), 2),
change = c(rep(NA, 5), rep('yes', 5), rep(NA, 10), rep('yes', 3), rep(NA, 8),
rep(NA, 2), rep('yes', 8), rep(NA, 8), rep('yes', 5), rep(NA, 8))
)
对于每个组id,我想过滤一个系列的第一个和最后一个dates,它由第二列change定义为yes(即非NA)。我可以执行以下操作,这将按组为我提供第一个和最后一个非 NA 行。但是,问题是该系列每组出现不止一次。
dt[ !is.na(change),
.(head(date, 1),
tail(date, 1)),
.(id) ]
这些是我想要过滤的行索引:
dt[c(6,10,21,23,34,41,50,54)]
【问题讨论】:
标签: r dplyr data.table