Я хотел бы взять подмножество кадра данных и хранить наблюдения, где только определенные столбцы являются NA, а не другими. Например:r подмножество dataframe только для определенных столбцов
d <- data.frame(cat=c(1, 2, NA, NA), dog=c(3, 3, NA, 1), rabbit=c(.1, .2, .3, .4), python=c(3, 3, 3, 3))
d
cat dog rabbit python
1 1.0 3.0 0.1 3.0
2 2.0 3.0 0.2 3.0
3 NA NA 0.3 3.0
4 NA 1.0 0.4 3.0
Как элегантно получить только наблюдение 4, то есть только наблюдение, для которого cat
, и только cat
является NA? Я знаю, что я могу сделать
d2 <- subset(d, is.na(cat)&!is.na(dog)&!is.na(rabbit)&!is.na(python))
cat dog rabbit python
4 NA 1.0 0.4 3.0
но это громоздко, когда у меня есть много особенностей, например, У меня есть 20 функций, и я хочу подмножество данных, в которых только 4 из них являются НС. Есть ли более элегантный способ сделать это, чем набирать is.na(featureOmitted)
и !is.na(featureKept)
для каждых featureOmitted
и featureKept
, которые я хочу? И как только у меня есть кадр данных этих конкретных наблюдений, как мне удалить столбцы NA, с помощью которых я применил фильтр?