Заранее извините, если я не отформатирую этот вопрос отлично, я впервые пишу вопрос!
У меня есть таблица с пациентами в виде строк и симптомов в виде столбцов. Симптом ответа - 0/1 (отсутствует / присутствует). Я заметил 3 разных способа ввода данных. (1) Доступны все данные (пациент A), (2) Все данные отсутствуют (пациент D), ИЛИ только в некоторых столбцах отсутствуют данные, а в других столбцах есть ответ (пациенты B, C или E).
> patient<- c('A','B','C','D', 'E')
> symptom1<- c(1,0,1,NA,1)
> symptom2<- c(0,NA,NA,NA,0)
> symptom3<- c(0,NA,NA,NA,NA)
> df<- data.frame(patient, symptom1, symptom2, symptom3)
> df
patient symptom1 symptom2 symptom3
1 A 1 0 0
2 B 0 NA NA
3 C 1 NA NA
4 D NA NA NA
5 E 1 0 NA
Я хочу создать новый столбец, «болезнь» с ответом 0/1, чтобы у пациента было 1 единица, тогда болезнь == 1, но у них должны быть все 0 для болезни == 0. По сути, я хочу игнорировать все NA, когда в строке присутствуют значения, но если строка полностью состоит из NA, я хочу болезнь == NA.
Я пытался использовать na.rm = TRUE, но как Вы можете видеть, что у пациента D он рассматривает NA как 0:
> df$disease<- apply(df[2:4], 1, sum, na.rm=TRUE)
> df
patient symptom1 symptom2 symptom3 disease
1 A 1 0 0 1
2 B 0 NA NA 0
3 C 1 NA NA 1
4 D NA NA NA 0
5 E 1 0 NA 1
Это проблема, потому что, если все столбцы являются NA, у нас фактически нет достаточно информации, чтобы сказать, что пациент не испытывает любые симптомы - может быть, они просто отсутствуют данные. Есть какой-нибудь опыт / предложения по работе с АН в такой ситуации?