【问题标题】:Exporting numeric vector as character to CSV将数字向量作为字符导出到 CSV
【发布时间】:2013-06-26 14:55:33
【问题描述】:

让以下向量:

x <- c(123456789123456789, 987654321987654321)
y <- as.character(x)

我正在尝试将y 导出到 csv 文件中,以便稍后转换为 XLSX(不要问,客户要求),如下所示:

 write.csv(y, file = 'y.csv', row.names = F)

如果我在纯文字处理器中打开y.csv,我可以看到它在元素周围正确插入了引号,但是当我在 Excel 中打开它时,程序坚持将列转换为数字并以科学格式显示内容.这需要重新格式化列的额外步骤,当处理大量文件时,这可能会真正浪费时间。

如何在 R 中格式化 20 位数字的字符向量,以便 Excel 不会以科学计数法显示它们?

【问题讨论】:

    标签: r excel csv export export-to-csv


    【解决方案1】:

    您可以在 Excel 中转到 Data-&gt;From Text 并在最后一步将 Column data format 指定为 Text,而不是通过 File-&gt;Open 打开 csv 文件。

    虽然不确定这样做是否可以节省任何时间,但您也可以考虑使用WriteXLS(或其他一些直接到 xls 的)包。


    编辑

    Here's 强制 Excel 以文本形式读取的更好方法:

    write.csv(paste0('"=""', y, '"""'), 'y.csv', row.names = F, quote = F)
    

    【讨论】:

    • 感谢您为我提供了 pre-Excel 解决方案,但我的实际问题涉及数据框,例如 z &lt;- data.frame(cbind(y, letter = c('a', 'b')))。我想告诉write.csv z$y 不是数字,但它可以单独留下z$letter(以及真实数据框中的所有其他变量)。我该怎么做?
    • 只需将上述paste 应用于您喜欢的列,在这种特殊情况下:z$y = paste0('"=""', z$y, '"""')
    • 智能解决方案。现在我得到了我想要的方式。再次感谢!
    • write.csv(paste0("=\"", y, "\""), "y.csv", row.names=FALSE,quote=FALSE)
    【解决方案2】:

    在 Excel 中,选择数字列,并将其格式化为文本。 (单元格格式 -> 数字选项卡 -> 左侧列表中的文本)

    【讨论】:

    • 感谢您的意见,但这就是我现在正在做的事情,并希望实现自动化。
    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多