2010-09-30 4 views
1

Je travaille sur l'exportation d'un data.frame à un csv pour une utilisation dans un système de commerce électronique après avoir fait quelques analyses à ce sujet.Comment supprimer les guillemets autour des valeurs NULL dans write.csv?

Je supprime les valeurs NA avant l'extrait car elles ne sont pas autorisées dans le système auquel j'ajoute les données. Le processus que j'ai ressemble à ceci, mon data.frame est appelé prod_out:

prod_out[is.na(prod_out)] <- c("") 

prod_con<-file('product_output.csv',encoding="utf8") 

write.csv(prod_out,file=prod_con,append=FALSE,eol="\r",quote=TRUE,row.names=FALSE) 

Cela génère le fichier, cependant, pour les champs qui sont NULL ils sont tous deux cités comme ceci:

...,"",... 

-je besoin de ne pas avoir les guillemets doubles pour les champs NULL et les laisser pour tout champ de caractère comme celui-ci:

...,,... 

Je l'ai changement quote = FALSE, mais qui a supprimé tous les doubles guillemets et j'ai besoin c Les champs de caractères doivent rester intacts. Y at-il un moyen de dériver les valeurs NULL?

Toute aide est appréciée.

Merci,

Jason

+0

Vous avez dit à NA d'être des chaînes avec prod_out [is.na (prod_out)] <- c ("") –

Répondre

5

essayez ceci:

df<-data.frame(w=c("a","b"),x=runif(2),y=rep(NA,2),z=runif(2)) 
write.csv(df,na="",quote=TRUE,row.names=FALSE) 
+2

Et assurez-vous de sauter l'étape où vous remplacez NA avec c ("") –

+0

Exactement, merci. – kohske

+0

Je vois ce que tu veux dire. Merci @kohske et @Brandon pour l'information et l'éducation sur le fonctionnement des valeurs NA et la meilleure façon de les gérer. J'apprécie ton aide. – analyticsPierce

1

D'abord, il est utile de savoir, si vous ne le faites pas déjà que "NA" et NA ne sont pas la même chose:

> x = c(3, 4, 5, 7, 12, "NA", "NA", 12, 43) 
> x 
[1] "3" "4" "5" "7" "12" "NA" "NA" "12" "43" 
> is.na(x) 
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 

> # now convert each "NA" to NA 
> x[x=="NA"] = NA 
> x 
[1] "3" "4" "5" "7" "12" NA NA "12" "43" 
> is.na(x) 
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE 

En somme, pour « enlever les guillemets doubles » de chaque NA, vous devez convertir « NA » à NA, comme ci-dessus.

+0

merci pour l'exemple. Ceci est très utile pour comprendre comment les valeurs NA sont différentes. – analyticsPierce

Questions connexes