Ich möchte eine Teilmenge eines Datenrahmens nehmen und Beobachtungen behalten, wo nur bestimmte Spalten NA und nicht andere sind. Zum Beispiel:r Teilmenge Datenrahmen für nur bestimmte Spalten
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
Wie kann ich elegant nur Beobachtung 4, das heißt die einzige Beobachtung, für die cat
und nur cat
ist NA? Ich weiß, dass ich kann
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
, aber das ist umständlich, wenn ich viele Funktionen, z. Ich habe 20 Funktionen und ich möchte eine Teilmenge von Daten, wo nur 4 von ihnen sind NAs. Gibt es eine elegantere Möglichkeit, dies zu tun als is.na(featureOmitted)
und !is.na(featureKept)
für jede einzelne featureOmitted
und featureKept
, die ich möchte? Und wenn ich einen Datenrahmen dieser speziellen Beobachtungen habe, wie lasse ich die NA-Spalten fallen, mit denen ich den Filter angewendet habe?