用R中的多个变量替换纵向数据集

时间:2018-12-07 20:22:56

标签: r subset longitudinal

我有一个长格式的纵向数据集,(其中包括)变量: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的参与者。

希望这很有道理。

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

第一步是找到IDworkingChronic列都为SRH的{​​{1}}。在下一步中,我们将从您的数据框中过滤0之外的ID

数据

IDs_out