【问题标题】:How to remove double quotes around NULL values in write.csv?如何删除 write.csv 中 NULL 值周围的双引号?
【发布时间】:2011-04-19 02:54:45
【问题描述】:

在对它进行一些分析之后,我正在努力将 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 值?

感谢任何帮助。

谢谢,

杰森

【问题讨论】:

  • 你告诉 NA 是带有 prod_out[is.na(prod_out)] 的字符串

标签: r


【解决方案1】:

试试这个:

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)

【讨论】:

  • 并确保跳过将 NA 替换为 c("") 的步骤
  • 我明白你的意思。感谢@kohske 和@Brandon 提供有关 NA 价值观如何运作以及处理它们的最佳方式的信息和教育。感谢您的帮助。
【解决方案2】:

首先,如果您还不知道“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,如上所述。

【讨论】:

  • 谢谢你的例子。这对于了解 NA 值有何不同非常有帮助。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多