如何在不在变量值周围打印引号的情况下使用 write_excel_csv(或类似的)?

问题描述 投票:0回答:1

所以我需要创建一个需要由第三方软件(pxjob)读取的csv文件。出于某种原因,如果我不使用 UTF-8-BOM,它会拒绝阅读我的斯堪的纳维亚字符。由于我还必须使用分号作为分隔符,因此我倾向于使用 write_excel_csv 函数,因为它可以解决这两个问题。

导出的 csv 文件如下所示:

"Deltagande kommuner vårdtagare";;;
"Län";"Enhet";"År";"value"
"10 Blekinge län";"Totalt antal kommuner i län";"2015";"5"
"10 Blekinge län";"Antal deltagande kommuner";"2015";"4"
"20 Dalarnas län";"Totalt antal kommuner i län";"2015";"15"
"20 Dalarnas län";"Antal deltagande kommuner";"2015";"4"
"09 Gotlands län";"Totalt antal kommuner i län";"2015";"1"

但是这种格式导致pxjob读取文件错误:

然而,我发现了一个奇怪的解决方法。如果我打开 Excel,进行随机更改,撤消更改并保存/覆盖 csv 文件(仍然是 csv 文件),文件将如下所示:

Deltagande kommuner vårdtagare;;;
Län;Enhet;År;value
10 Blekinge län;Totalt antal kommuner i län;2015;5
10 Blekinge län;Antal deltagande kommuner;2015;4
20 Dalarnas län;Totalt antal kommuner i län;2015;15
20 Dalarnas län;Antal deltagande kommuner;2015;4
09 Gotlands län;Totalt antal kommuner i län;2015;1

所以双引号消失了。现在文件被正确读入 pxjob:

所有这些可能有更精确的术语,但是是否可以直接从 R 中以这种格式创建 csv 文件,最好使用 write_excel_csv 函数(或类似的函数)?

r csv export-to-csv
1个回答
1
投票

可以使用您直接从 R 中描述的格式创建 CSV 文件。您可以使用带有以下选项的 write.csv 函数:

write.csv(df, "file.csv", row.names = FALSE, quote = FALSE, sep = ";", fileEncoding = "UTF-8-BOM")

这里,df是要导出到CSV文件的数据框的名称,“file.csv”是输出文件的名称,row.names = FALSE从输出中删除行名,quote = FALSE删除值周围的双引号,sep = ";"将分号设置为分隔符,fileEncoding = "UTF-8-BOM" 将文件编码设置为 UTF-8-BOM,以确保正确编码斯堪的纳维亚字符。

我不熟悉 readr 库 但是如果你想使用 write_excel_csv 函数,你可以在选项参数中指定选项。这是一个例子:

library(readr)

write_excel_csv(df, "file.csv", options = list(row.names = FALSE, quote = FALSE, sep = ";", fileEncoding = "UTF-8-BOM"))

这应该生成一个 CSV 文件,其中包含正确编码的斯堪的纳维亚字符,并且值周围没有双引号。

© www.soinside.com 2019 - 2024. All rights reserved.