2016-08-09 25 views
0

Ich habe eine Variable, die partielle NAs enthält. Es handelt sich um eine Variable, die einen Zeitraum vom Startjahr bis zum Ende des Jahres darstellt, wobei jedoch für das Endjahr und das laufende Jahr die Periodenbereiche bis NA fehlen.Entfernen von Zeilen mit Variablen mit partiellen NAs

#  startyear endyear ongoingasofyear imposition sanctions_period 
#1  1945 1947    NA   1  1945-1947 
#2  1946 1949    NA   1  1946-1949 
#3  1946 1993    NA   1  1946-1993 
#4  1946 NA    NA   1  1946-NA 
#5  1946 1946    NA   1  1946-1946 
#6  1946  NA    NA   1  1946-NA 

Wie kann ich die Beobachtungen entfernen, die eine NA in der Sanktionszeit enthalten? Vielen Dank!

+2

Vielleicht mit 'df [! Grepl (" NA ", df $ suctions_period, fest = WAHR),]' wo 'df' ist Ihre Daten. –

+1

Gibt es einen Grund, nicht nur 'df [! (is.na (endyear) & is.na (noch in diesem Jahr))]? – dash2

+0

Eine andere wäre, beide Spalten auf einmal zu überprüfen: df [! RowSums (is.na (df [2: 3])) == 2,] ' –

Antwort

0

Es gibt einen eingebauten Befehl dafür: complete.cases()

d1 <- read.table(header=TRUE,text=" 
startyear endyear ongoingasofyear imposition sanctions_period 
1945 1947    NA   1  1945-1947 
1946 1949    NA   1  1946-1949 
1946 1993    NA   1  1946-1993 
1946 NA    NA   1  1946-NA 
1946 1946    NA   1  1946-1946 
1946  NA    NA   1  1946-NA") 

d2 <- d1[complete.cases(d1[c("startyear","endyear")]),] 
0

Sie auch sqldf

Bibliothek (sqldf)

df < verwenden könnte - read.csv ("df.csv", header = TRUE, sep = "")

sqldf (c ("löschen von df wo sanctions_period like '% -NA%'", "select * from df"))

Verwandte Themen