2016-06-01 9 views
0

Ich habe einen Datenrahmen:NAs von Datenrahmen, außer in einer Spalte R

column1 <- c(400, 500, 350, 70, NA, NA, 500, 350, 70) 
column2 <- c(NA, 67, 23, 45, 78, 123, 54, 123, 898) 
column3 <- c(412, 4, 5, 6, 1, 689, 90, 12, NA) 
column4 <- c("IMC", "VMC", NA, NA, NA, NA, "IMC", "VMC", "IMC") 
data1 <- data.frame(column1, column2, column3, column4) 

Es sieht wie folgt aus:

column1 column2 column3 column4 
400  NA  412  IMC 
500  67  4  VMC 
350  23  5  NA 
70  45  6  NA 
NA  78  1  NA 
NA  123  689  NA 
500  54  90  IMC 
350  123  12  VMC 
70  898  NA  IMC 

Frage: Ist es möglich, die Zeilen mit der NA von Spalte 1 zu entfernen, , 2 und 3, aber nicht aus Spalte 4? Meine Ausgabe sieht dann so aus:

column1 column2 column3 column4 
500  67  4  VMC 
350  23  5  NA 
70  45  6  NA 
500  54  90  IMC 
350  123  12  VMC 

Ich habe mit dieser für eine Weile jetzt gekämpft. Vielen Dank!

Antwort

2

Sie können complete.cases() auf den ersten drei Spalten verwenden und führen Sie dann eine subset:

data1[complete.cases(data1[, 1:3]), ] 
    column1 column2 column3 column4 
2  500  67  4  VMC 
3  350  23  5 <NA> 
4  70  45  6 <NA> 
7  500  54  90  IMC 
8  350  123  12  VMC 
+0

! Ich habe eine zusätzliche Frage: Was ist, wenn ich die Zeilen mit NA aus den Spalten 1, 2 und 4 entfernen möchte, aber nicht aus Spalte 3? (Kann ich 'data1 [complete.cases (data1 [, 1,2,4]),]' in diesem Fall verwenden? – kiae

+0

'data1 [complete.cases (data1 [, c (1, 2, 4)]), ] 'sollte in Ordnung sein.Sie müssen die Spaltenauswahl als Vektor angeben und das ist, woher das' c' kommt – Psidom

+0

Großartig! Es hat funktioniert, vielen Dank! – kiae

2

A library(dplyr) Ansatz:

data1 %>% filter(complete.cases(.[,-4])) 

oder

data1 %>% filter(complete.cases(.[,-3])) 

wenn Sie behalten möchten NA's in Spalte 3

1

Hier ist eine Option mit data.table durch die Spalten in .SDcols Angabe Vielen Dank für Ihre Antwort

library(data.table) 
setDT(data1)[data1[, complete.cases(.SD), .SDcols = column1:column3]] 
# column1 column2 column3 column4 
#1:  500  67  4  VMC 
#2:  350  23  5  NA 
#3:  70  45  6  NA 
#4:  500  54  90  IMC 
#5:  350  123  12  VMC