Подстановка продольного набора данных более чем одной переменной в R - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть продольный набор данных в расширенной форме, с (среди прочих) переменными: 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 голосов
/ 07 декабря 2018

Вот способ

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...