我有一个类似这样的数据集
a <- data.frame(var1 = c("patientA", "patientA", "patientA", "patientB", "patientB", "patientB", "patientB"),
var2 = as.Date(c("2015-01-02","2015-01-04","2015-02-02","2015-02-06","2015-01-02","2015-01-07","2015-04-02")),
var3 = c(F, T, F, F, F, T, F)
)
sequ <- rle(as.character(a$var1))
a$sequ <- sequence(sequ$lengths)
生产
> a
var1 var2 var3 sequ
1 patientA 2015-01-02 FALSE 1
2 patientA 2015-01-04 TRUE 2
3 patientA 2015-02-02 FALSE 3
4 patientB 2015-02-06 FALSE 1
5 patientB 2015-01-02 FALSE 2
6 patientB 2015-01-07 TRUE 3
7 patientB 2015-04-02 FALSE 4
如何对数据集进行子集/筛选,以获取所有 var3 == TRUE 且 var2 日期值大于 var3 == TRUE 所在行的日期值(按病人、 var1 分组)?我已经尝试了。
subset(a, (var3 == TRUE) & (var2 > var3))
但是这并不能产生正确的结果集。正确的结果集应该是:
# var1 var2 var3 sequ
# 1 patientA 2015-01-04 TRUE 2
# 2 patientA 2015-02-02 FALSE 3
# 3 patientB 2015-02-06 FALSE 1
# 4 patientB 2015-01-07 TRUE 3
# 5 patientB 2015-04-02 FALSE 4
var3 == TRUE
之后的所有日期?如果每个患者有多个var3 == TRUE
,会发生什么? - David Arenburg