R:如何读取具有 15 位产品 ID 数字的 CSV 文件?
Posted
技术标签:
【中文标题】R:如何读取具有 15 位产品 ID 数字的 CSV 文件?【英文标题】:R: How to read a CSV file having Product ID numeric 15 digits? 【发布时间】:2014-11-06 01:54:47 【问题描述】:当我读取数据文件(*.CSV 文件)时,产品列被读取为科学数据,因此产品 ID 的 102307200002148 和 102307200026812 读取为 1.02307e+14。比较时无法区分:
库存$产品[14]==库存$产品[15] [1] 是的
尝试使用选项(scipen=999),它采用前 6 位数字并用 0 填充其余部分,问题仍然存在。请帮忙。
【问题讨论】:
对read.csv
使用colClasses
参数来指定Product
列的类型为"character"
(或"factor"
)
一个double可以容纳15个十进制数字;你看到的是一个代表而不是整个价值。试试options(digits=22)
。但是对于产品 ID,一个因素更有意义。
对于 colClasses,它读作 chr "1.02307E+14"。没有运气。
@PB4133944 肯定有其他问题。也许你用这种格式写了文件。
也许可以将您的read.csv
(或read.table
或您使用的任何一个)行放在您的问题中,以便我们了解发生了什么?
【参考方案1】:
准备相关数据
data <- c("102307200002148","102307200026812")
write.csv(data, file = "data.csv")
read <- read.csv(file = "data.csv")
测试数据
> read
X x
1 1 1.023072e+14
2 2 1.023072e+14
再次测试作为字符阅读
> as.character(read[1,])
[1] "1" "102307200002148"
数据已准备好进行映射
> as.character(read[1,]) == as.character(read[2,])
[1] FALSE FALSE
> as.character(read[1,]) == as.character(read[1,])
[1] TRUE TRUE
【讨论】:
您不是“作为字符阅读”,而是将数值解释为字符。如果它有额外的数字,这将不起作用。 是的,但它会获得 +1 以复制 OP 所说 他们在文件中的内容并根据描述显示,只需使用read.csv()
阅读就可以了.【参考方案2】:
经过几个小时的尝试,我才意识到我的csv文件已损坏(可能是我的excel自动保存了它,不确定)并将产品ID的值更改为数据文件中的科学计数法。带上正确的 csv 文件后,我的代码在没有任何特殊编码的情况下按预期工作。
感谢大家的支持并尝试解决我的问题,我真诚地感谢。
【讨论】:
这是 Excel 的一个非常烦人的“功能”。以上是关于R:如何读取具有 15 位产品 ID 数字的 CSV 文件?的主要内容,如果未能解决你的问题,请参考以下文章