加载到R中时值将转换

时间:2019-03-14 09:43:08

标签: r csv

我加载我的数据

spend <- read.csv("path/spending.csv",sep=";",dec=",",stringsAsFactors =F)

数据中有campaign_id

which(grepl(23843044135350128, spend$campaign_id))
integer(0)

但是当我通过txt文件打开数据时,值23843044135350128中就有数据!

但是,如果我通过excel打开spending.csv,则列中的值23843044135350128不存在。 如果我尝试通过ctrl+f找到它,而我只输入'128',它就会找到这样的值

23843112895260700

此值在1400th行中。但是,如果通过.txt打开,则需要1400th上的行作为我的值。 怎么了?如何在R中加载数据?

1 个答案:

答案 0 :(得分:2)

问题是您的数字超出了R。double precision floating point number中的双浮点数字所允许的精度,因此当数字转换为数字时会四舍五入。

示例:

print(23843044135350130,digits=22)
# [1] 23843044135350128

函数read.csv最初以character的形式读取数据,然后根据其认为应呈现数据的方式进行转换。您可以使用参数colClasses(请参见?read.table)覆盖默认值。

spend <- read.csv("path/spending.csv",sep=";",dec=",",stringsAsFactors =F,colClasses=c(campaign_id='character'))

这会将campaign_id列保留为字符,从我的名字来看,这会更好,因为ID通常用于匹配而不是算术。