2017-08-24 5 views
0

Premier message sur SO jamais si je suis impatient de recevoir des commentaires de certains anciens combattants dans R sur le forum. :)Read.csv ne compte pas les NA dans mon ensemble de données

J'ai un CSV file (2.52KB) que je suis actuellement incapable d'identifier NAs quand je lance le script identifiant NA suivant (en particulier dans la colonne ORG):

mydata = read.csv("DF_Cleanup_isNAError_Test.csv" header = TRUE, sep = ",", quote = "", dec = ".", fill = TRUE) 
nan_count <-sapply(mydata, function(y) sum(length(which(is.na(y))))) 
nan_count <- data.frame(nan_count) 
nan_count 

Quand j'isole les enregistrements avec des valeurs de NA Colonne ORG cependant (seulement 30 lignes au total) dans le control data set, exécutant le même script d'identification NA renvoie un nombre de 30 pour la colonne ORG. Cela est également attendu pour le script ci-dessus, mais ce n'est pas le cas.

mydata = read.csv("DF_Cleanup_isNAError_Control.csv" header = TRUE, sep = ",", quote = "", dec = ".", fill = TRUE) 
nan_count <-sapply(mydata, function(y) sum(length(which(is.na(y))))) 
nan_count <- data.frame(nan_count) 
nan_count 

Je suis complètement déconcerté en ce moment pourquoi il y aurait une différence avec l'ajout d'autres enregistrements dans l'ensemble de données lorsque rien n'a changé au sujet des dossiers individuels en question. L'ensemble de données de test n'est encore qu'un sous-ensemble des données de population totales; J'ai environ 850 000 lignes au total, mais j'ai pensé que c'était un bon début pour isoler le problème. section

Voici mon information actuelle session

R version 3.4.1 (2017-06-30) 
    Platform: x86_64-w64-mingw32/x64 (64-bit) 
    Running under: Windows 7 x64 (build 7601) Service Pack 1 

    Matrix products: default 

    locale: 
    [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United 
    States.1252 LC_MONETARY=English_United States.1252 
    [4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

    attached base packages: 
    [1] stats  graphics grDevices utils  datasets methods base  

    other attached packages: 
    [1] dplyr_0.7.2 

    loaded via a namespace (and not attached): 
    [1] compiler_3.4.1 magrittr_1.5  assertthat_0.2.0 R6_2.2.2   
    tools_3.4.1  bindrcpp_0.2  glue_1.1.1  tibble_1.3.3  
    [9] Rcpp_0.12.12  pkgconfig_2.0.1 rlang_0.1.1  bindr_0.1 
+1

Il pourrait être lu comme "NA" '. Pourriez-vous essayer 'which (y ==" NA ")' (dans le contexte de votre code) pour tester cela? – CPak

+2

Essayez d'ajouter 'na.strings =" "' à votre appel 'read.csv'. – jav

+1

problème secondaire: votre 'spply' peut être remplacé par' colSums (is.na (myData) ' –

Répondre

0

@jav a répondu ceci dans le commentaire, mais je me suis dit cela devrait en fait figurer comme une réponse. S'il publie son commentaire comme réponse, je le supprimerai. L'ajout de na.strings = "" à read.csv("filename.csv") résout le problème.