2014-12-07 68 views
2

我有一個19位數的客戶ID,而使用read.csv導入時,R正在改變最後幾位數字,我無法讀入正確的客戶ID。R read.csv截取19位數字的客戶ID

data= read.csv("filename.csv") 
options("scipen"=100, "digits"=19) 
+0

它是場分離的問題嗎?給我們一個數據的小預覽。 R不只是砍掉數字。 – ECII 2014-12-07 10:16:28

+0

@ECII你忘記了整數限制。 – 2014-12-07 13:15:38

回答

2

R以32位整數或64位雙精度存儲數字。您不能以任何一種格式存儲19位數字,因此您希望將您的客戶ID作爲字符串讀取。但是,如果它是全部數字,則R會將其檢測爲數字。

因此,解決方法是告訴read.csv()它是一個字符串,例如,

data <- read.csv("filename.csv", colClasses="character") 

其中說所有列都是字符;也可以爲每個單獨的列提供類型。請參閱幫助頁面。

1

我假設要讀入的數據爲floating point numbers。比讀爲string另一個選擇是使用bit64

library(bit64) 
data <- read.csv('filename.csv', colClasses='integer64') 
+0

這假定所有列都可以被轉換成一個(長)整數。如果它是混合數據,這可能不是真的。 G.格洛騰迪克的解決方案避免了這一點。 – 2016-01-07 22:08:14

+0

@PaulBailey是的,你是對的。我以這種方式假設,我認爲格羅騰迪克的解決方案更一般。 – akrun 2016-01-08 02:52:35

1

使用numerals說法:

read.csv("filename.csv", numerals = "no.loss") 

有關numerals參數信息,請參閱?type.convert