Удалите строки с отсутствующими данными в столбцах выбора, только если у них нет отсутствующих данных во всех столбцах (желательно использовать complete.cases) - PullRequest
1 голос
/ 04 октября 2019

Поэтому я пытаюсь удалить строки, в которых отсутствуют данные в некоторых столбцах, но не те, в которых отсутствуют данные во всех столбцах.

с использованием rowSums вместе с !is.na() дали мне 1000 строкNA в нижней части моего набора данных. Верхний ответ здесь предоставил хороший способ решения моей проблемы с использованием complete.cases:

Удаление строк со всеми или некоторыми NA (отсутствующими значениями) в data.frame

т.е.

data_set1 <- data_set1[complete.cases(data_set1[11:103]), ]

Однако это позволяет мне удалять только строки с отсутствующими данными в указанных столбцах. Я изо всех сил пытаюсь получить complete.cases, чтобы поиграть с rowSums и не дать ему удалить строки со всеми недостающими данными.

Любой совет очень ценится!

1 Ответ

1 голос
/ 04 октября 2019

Попробуйте использовать rowSums, например:

cols <- 11:103
vals <- rowSums(is.na(data_set1[cols]))
data_set2 <- data_set1[!(vals > 0 & vals < length(cols)), ]

Или с complete.cases и rowSums

data_set1[complete.cases(data_set1[cols]) | 
         rowSums(is.na(data_set1[cols])) == length(cols) , ]

С воспроизводимым примером,

df <- data.frame(a = c(1, 2, 3, NA, 1), b = c(NA, 2, 3, NA, NA), c = 1:5)
cols <- 1:2

vals <- rowSums(is.na(df[cols]))
df[!(vals > 0 & vals < length(cols)), ]

#   a  b c
#2  2  2 2
#3  3  3 3
#4 NA NA 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...