2013-11-20 289 views
2

當使用Excel中的「另存爲...」(然後將其導入到R中)將xls文件轉換爲csv文件時,csv輸出文件系統地丟棄小數點後的所有數字例如1.0524變成1,5.213變成5等等。Excel到csv文件轉換 - 保留小數點後的數字

如何避免這種情況,這顯然會導致大量數據條目的準確性問題?

謝謝

+0

你肯定在你的Excel單元格中的數據真的浮點數符合您的計算機的十進制設置? –

+0

Excel不會自動截斷浮動。你正在使用哪個版本?哪個國家?您的CSV庫期望什麼分隔符? –

+0

我使用的是Excel 2010的法語版 - 分隔符是; – user2568648

回答

5

Excel不這樣做。但是,非美國用戶偶然發現Excel的CSV輸出格式很常見。

在美國,Excel使用.作爲小數點,,作爲CSV分隔符(顯然,由於某種原因,它被稱爲逗號分隔值)。

在許多歐洲國家,Excel使用小數點,;作爲CSV分隔符(根據各國的十進制表示法)。

如果您嘗試使用美國CSV庫讀取EU CSV文件,則會出現明顯原因的混合字段值。

因此,例如R中你需要告訴你的CSV讀者這樣的:

table = read.csv2(file, sep = ";", quote = "\"", dec = ",") 
+0

謝謝。出於興趣,從Excel文件讀入R數據的首選方式是什麼?最好轉換爲製表符分隔的文本文件而不是csv文件? – user2568648

+2

使用'read.csv2()'。它允許你指定分隔符和小數點字符。在文檔提示處輸入'help(read.csv)'。 –

+0

+1 [good answer](http://en.wikipedia.org/wiki/Decimal_mark)! – 2013-11-20 14:15:51

相關問題