我正在努力将data.frame导出到csv,以便在我对其进行一些分析后用于电子商务系统。
我正在删除提取之前的NA值,因为在我添加数据的系统中不允许它们。我的过程看起来像这样,我的data.frame被称为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)
这会生成文件,但是,对于NULL为的字段,它们都是双引号,如下所示:
...,"",...
我需要没有NULL字段的双引号,并将它们留给任何字符字段,如下所示:
...,,...
我确实更改了quote = FALSE,但是删除了所有双引号,我需要字符字段保持不变。有没有办法取消引用NULL值?
感谢任何帮助。
谢谢,
杰森
答案 0 :(得分:5)
试试这个:
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)
答案 1 :(得分:1)
首先,如果你还没有“NA”和NA不是同一个东西,那么知道它是有帮助的:
> 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
总而言之,要从每个NA“删除双引号”,您需要将“NA”转换为NA,如上所述。