为什么我的导出文件(.CSV)的数字被错误地表示?

时间:2016-12-05 07:25:18

标签: r

我在导出我想要的数据时遇到问题.CSV文件。只有在这个导出的文件中,它总是这样,其他导出的文件都可以。你能帮我吗?

我认为这个问题来自我的PC语言,因为我使用的是德语PC,但R是德语,R studio是英语。我试图将它们改为同一种语言,但它没有成功!

问题是否可能来自语言?

这是输出的样子,如果你注意到平均值,那么数字就会以奇怪的方式表示。

导出到.CSV时的结果:

The results when exported to .CSV

这张照片显示了相同的矩阵,但在R studio中:

The results inside R studio

3 个答案:

答案 0 :(得分:2)

不要信任excel,因为它会在打开时转换csv文件,具体取决于您的Windows语言设置。用文本编辑器查看csv,如果csv没问题(我猜),只需将你的windows系统语言改为"英语(美国)",关闭全部 excel实例然后打开csv。我也在德国的PC上,并且总是遇到同样的问题。

答案 1 :(得分:0)

我不是R用户,但它似乎是一个语言环境问题。尝试使用Sys.setlocale("LC_ALL","English")

答案 2 :(得分:0)

问题是Excel中的千位分隔符。

  1. 因此,最简单的方法是在excel中停用它。
  2. 在R中,您可以将数据导入为字符(stringsAsFactors = F)并手动将每个.替换为"",然后将,替换为.。提及.作为特殊含义的模式(?regex)。这就是为什么我们在将其视为一个简单的点时,必须将其标记为\\.的普通点。
  3. 我保存的文件.为千位分隔符,,为小数点分隔符Test.csv

    csv <- read.csv2("Test.csv", header = F, stringsAsFactors = F)
    #              V1
    #1  15.123.515,00 ## <- these are characters/strings, not numbers
    #2  15.241.241,00
    #3   1.251.636,00
    #4  46.345.325,00
    #5 343.434.536,00
    apply(csv, 2, function(x) as.numeric(gsub(",",".",gsub("\\.", "", x))))
    #             V1
    # [1,]  15123515 ## <- these are numeric/numbers now
    # [2,]  15241241
    # [3,]   1251636
    # [4,]  46345325
    # [5,] 343434536
    

    使用apply和参数2,我会在每列上应用替换(gsub)。如果您只有几列,则可以单独更改它们,而无需使用apply