【问题标题】:R csv export with specific decimal places produces output with unwanted spaces带有特定小数位的 R csv 导出会产生带有不需要的空格的输出
【发布时间】:2016-09-05 09:15:59
【问题描述】:

经过几个步骤后,我尝试导出一个带有 R 中给定分隔符和小数位的 csv 文件。

我会这样计算:

Data_Table$`field_output` <- ifelse(Data_Table$`field_1` > 0, 
                                      Data_Table$`field_2`,
                                      Data_Table$`field_3`
                                     )

我尝试了两种格式:

Data_Table$`field_output` <- format(round(Data_Table$`field_output`, 2), nsmall = 2)

Data_Table$`field_output` <- formatC(Data_Table$`field_output`, digits=2, format="f")

然后导出:

write.table(Data_Table, file=paste("./output/filename_", datestring, ".csv"), quote=FALSE, sep=";", eol = "\n", dec=".", row.names=FALSE, col.names=TRUE)

我的问题是输出

它产生右对齐的列,在输出字段前带有额外的空格/字符

datestring;ID;UOM;field_output
20160831;1;kWh;100628610.00
20160831;2;kWh;  1800000.00
20160831;3;kWh;      252.00
20160831;4;kWh;        0.00
20160831;5;kWh;        0.00

有没有办法摆脱这些,并有这样的格式:

datestring;ID;UOM;field_output
20160831;1;kWh;100628610.00
20160831;2;kWh;1800000.00
20160831;3;kWh;252.00
20160831;4;kWh;0.00
20160831;5;kWh;0.00

感谢您提前回复!如果它是微不足道的,或者已经回答了,请原谅!

【问题讨论】:

  • 您可以尝试添加gsub 来去除空格吗?即write.table(gsub(" ", "", Data_Table), ...)
  • 太棒了!它确实有效!感谢您的评论!
  • 我会添加它作为答案。

标签: r csv decimal write.table


【解决方案1】:

在写入文件时使用gsub去除空格,即

write.table(gsub(" ", "", Data_Table), ...)

【讨论】:

  • 谢谢!!!我尝试投票,但我刚刚注册,所以我需要一些声誉点来做到这一点:-)
【解决方案2】:

如果你想写一个 csv 文件,不妨试试 write.csv。对我来说,在 Excel 中打开它时它起作用了。

,"datestring","ID","UOM","field_output"
1,20160831,1,"kWh",100628610
2,20160831,2,"kWh",1800000
3,20160831,3,"kWh",252
4,20160831,4,"kWh",0
5,20160831,5,"kWh",0

在试用期间,它通过设置 row.names=ID 添加了额外的 id 行,我本可以避免它或通过设置 row.names=FALSE在 write.csv() 函数中。

【讨论】:

  • 感谢您的回复,但问题是我想要一个带有分号分隔符而不是逗号的 csv - 因此使用 write.table
  • 对不起,我刚刚意识到这是不可能的,你是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 2020-02-29
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多