我有一個19位數的客戶ID,而使用read.csv導入時,R正在改變最後幾位數字,我無法讀入正確的客戶ID。R read.csv截取19位數字的客戶ID
data= read.csv("filename.csv")
options("scipen"=100, "digits"=19)
我有一個19位數的客戶ID,而使用read.csv導入時,R正在改變最後幾位數字,我無法讀入正確的客戶ID。R read.csv截取19位數字的客戶ID
data= read.csv("filename.csv")
options("scipen"=100, "digits"=19)
R以32位整數或64位雙精度存儲數字。您不能以任何一種格式存儲19位數字,因此您希望將您的客戶ID作爲字符串讀取。但是,如果它是全部數字,則R會將其檢測爲數字。
因此,解決方法是告訴read.csv()它是一個字符串,例如,
data <- read.csv("filename.csv", colClasses="character")
其中說所有列都是字符;也可以爲每個單獨的列提供類型。請參閱幫助頁面。
我假設要讀入的數據爲floating point numbers
。比讀爲string
另一個選擇是使用bit64
library(bit64)
data <- read.csv('filename.csv', colClasses='integer64')
這假定所有列都可以被轉換成一個(長)整數。如果它是混合數據,這可能不是真的。 G.格洛騰迪克的解決方案避免了這一點。 – 2016-01-07 22:08:14
@PaulBailey是的,你是對的。我以這種方式假設,我認爲格羅騰迪克的解決方案更一般。 – akrun 2016-01-08 02:52:35
它是場分離的問題嗎?給我們一個數據的小預覽。 R不只是砍掉數字。 – ECII 2014-12-07 10:16:28
@ECII你忘記了整數限制。 – 2014-12-07 13:15:38