我加载我的数据
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中加载数据?
答案 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通常用于匹配而不是算术。