2017-03-03 8 views
0

Okay, ich bin zurück und dieses Mal habe ich ein reproduzierbares Beispiel mitgebracht.Phantom NA Datensätze erstellt von Subsetting

fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv" 
download.file(fileURL, destfile = "./acs.csv") 
acs <- read.csv("./acs.csv") 
mySubset <- acs[acs$ACR == 3 & acs$AGS == 6, ] 

Was ich erwarte, dass in mySubset sehen, ist die 77 Datensätze aus dem 6496, die diese Bedingung erfüllen. Was ich jedoch am Ende habe, sind meine 77 erwarteten Datensätze und 1.036 unerwarteten Datensätze, die für alle Spalten vollständig NA sind.

Was verstehe ich hier nicht?

+2

Probieren Sie 'mySubset <- acs aus [which (acs $ ACR == 3 & acs $ AGS ​​== 6),]' – G5W

+0

Das ist eine bessere Lösung. Ich war gerade dabei, eine zufällige Kolumne aufzuspüren, aber es hat mich irgendwie verrückt gemacht, dass ich nicht verfolgt habe, was passiert ist. –

Antwort

1

Reproduzierbare Beispiel:

df <- data.frame(a=c(NA, 1, 2 ,3), b = c("a", "b", "c", "d")) 
df[c(NA, TRUE, FALSE, FALSE), ] 
#  a b 
# NA NA <NA> 
# 2 1 b 

Grundsätzlich NA in den Filterstandardwerte die ganze Zeile zu NAs.

Um dieses Verhalten zu beheben, können Sie is.na(df$a) verwenden, um nach fehlenden Werten zu suchen.

Verwandte Themen