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 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据不同的条件从数字键中隔离选择的数字?

linux系统644、755、777权限详解

如何从 32 位 R 整数中提取 4 位无符号整数?

当某些数字包含逗号作为千位分隔符时如何读取数据?

如何在 R 中读取具有不同列数的 CSV 文件

如何读取包含千位分隔符和零的特殊处理(在 R 中)的 .csv 数据?