簡體   English   中英

R沒有正確導入csv文件

[英]R not importing csv file correctly

我對R有一個奇怪的問題。它沒有正確導入我從Excel導出的csv文件。 我有以下csv文件(我檢查了文本格式與Excel中的單元格值相同):

REGION;TYPE;CODE;BILL
A;X;871685920001760387;003007614504
B;Y ;871685920001765726;003007638434
C;Z;871685920001804326;003211001858

以上是我的csv文件的內容。 我把它保存為“Example.csv”。 現在我想將此文件導入R:

Ex <- read.csv2("Example.csv", header = TRUE, sep = ";")

現在,我特別想檢查CODE列是否匹配,因為我需要這些值來將它們與我在其他地方存儲的一些文件進行比較。 但是,當我將這些文件與tekst文件(以及Excel中的單元格值)進行比較時,使用options(digits = 19) ;

Ex$CODE
[1] 871685920001760384 871685920001765760 871685920001804288

如您所見,這些值根本不匹配! 嘗試as.character()會得到相同的結果:

as.character(Ex$CODE)
[1] "871685920001760384" "871685920001765760" "871685920001804288"

有誰知道如何解決這個問題? 我也嘗試過stringsAsFactors = FALSE ,但是沒有用。

提前致謝!

您可以通過設置colClasses它們全部作為字符colClasses

 > Ex = read.table("Example.csv", sep  = ";", header = TRUE, colClasses = "character")
 > Ex
   REGION TYPE               CODE         BILL
 1      A    X 871685920001760387 003007614504
 2      B   Y  871685920001765726 003007638434
 3      C    Z 871685920001804326 003211001858
!> sapply(Ex, class)
      REGION        TYPE        CODE        BILL
 "character" "character" "character" "character"

@JakeBurkhead給出了解決方案,但之所以發生這種情況,是因為默認情況下read.csv會將值解釋為numeric numeric受浮點運算規則的約束,特別是雙精度數

這就是R解釋這個值的方式:

print(871685920001760387,digits=18)
[1] 871685920001760384

雙打為一個數字提供53位精度,略低於10 ^ 16。 您的號碼幾乎是10 ^ 18,因此無法准確表示單位級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM