用R中的一个以上变量对纵向数据集进行子集设置



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

希望这是有道理的。

以下是

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

第一步是找到列workingChronicSRH都是0IDs。在下一步中,我们从不在IDs_out中的数据帧中筛选ID

数据

df1 <- structure(list(ID = c(451101001003, 451101020002, 451102068003, 
451103041001, 451102004001, 451203011001, 421103003031, 211102009021
), wave = c(1997L, 1997L, 2000L, 1997L, 1997L, 2004L, 2009L, 
2000L), working = c(1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L), Chronic = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L), SRH = c(0L, 1L, 1L, 1L, 0L, 0L, 
0L, 0L)), .Names = c("ID", "wave", "working", "Chronic", "SRH"
), class = "data.frame", row.names = c(NA, -8L))

相关内容

  • 没有找到相关文章

最新更新