【问题标题】:How to have R read CSV's actual values instead of Exponential format如何让 R 读取 CSV 的实际值而不是指数格式
【发布时间】:2021-12-12 12:19:52
【问题描述】:

我正在尝试读取其中一列的数字与名称持有者混合的银行文件,例如该列可能具有:

2.10731E+15
JOE BX SHOP
2.10802E+15
etc. 

2.10731E+15 类型文件的实际值为:2107310000000000,但是由于存在一些字符串,R 将列作为字符读取,因此仅将值显示为 2.10731E+15。

有没有办法让 R 在使用 read.csv 或 read_csv 读入时忽略 csv 文件的格式?

【问题讨论】:

  • 由于它们与字符串混合,列将作为字符类导入。

标签: r csv


【解决方案1】:

如果我们不介意将数字存储为字符,那么我们可以检查它是否为数字,然后转换为数字和格式,无需科学计数法:

# example data
x <- read.csv(text = "
myCol
2.10731E+15
JOE BX SHOP
2.10802E+15")

# get index of rows with numbers
ix <- !is.na(as.numeric(x$myCol))
#Warning message:
#  NAs introduced by coercion 

# format matching rows
x[ ix, "myCol"] <- format(as.numeric(x[ ix, "myCol"]), scientific = FALSE)

x
#              myCol
# 1 2107310000000000
# 2      JOE BX SHOP
# 3 2108020000000000

【讨论】:

  • 最好使用split(x$V1, c("num", "com"))分割数字和字符串。我假设每个数字都有一个关联的公司名称,并且您希望将两者都作为 R 中的列。
  • @Roland 好主意,这将使代码更简洁,但我们需要更真实的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
相关资源
最近更新 更多