我有一个长格式的纵向数据集,(其中包括)变量:ID,波,当前正在工作,慢性病的发生率和自我评估的健康状况:
ID wave working Chronic SRH
451101001003 1997 1 0 0
451101020002 1997 1 0 1
451102068003 2000 1 0 1
451103041001 1997 1 0 1
451102004001 1997 0 0 0
451203011001 2004 0 0 0
421103003031 2009 1 0 0
211102009021 2000 1 1 0
对于每个参与者,观察结果的数量是不相等的,有些观察者退出了,其他观察者加入了以后的浪潮。在查看工作条件对健康的影响时,我想从数据集中删除从未工作过的参与者,但要保留(可能)出于健康原因而停止工作的参与者。换句话说,具有工作= 0且慢性或SRH = 1的参与者。
希望这很有道理。
答案 0 :(得分:0)
这是一种方法
IDs_out <- df1[rowSums(df1[, c("working", "Chronic", "SRH")]) == 0, ]$ID
df1 <- df1[!df1$ID %in% IDs_out, ]
df1
# ID wave working Chronic SRH
#1 451101001003 1997 1 0 0
#2 451101020002 1997 1 0 1
#3 451102068003 2000 1 0 1
#4 451103041001 1997 1 0 1
#7 421103003031 2009 1 0 0
#8 211102009021 2000 1 1 0
第一步是找到ID
,working
,Chronic
列都为SRH
的{{1}}。在下一步中,我们将从您的数据框中过滤0
之外的ID
。
数据
IDs_out