Вот способ
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
равны 0
.На следующем шаге мы фильтруем ID
из вашего фрейма данных, которого нет в IDs_out
.
data
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))