首页 > 解决方案 > 如何让 R 读取 CSV 的实际值而不是指数格式

问题描述

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

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

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

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

标签: rcsv

解决方案


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

# 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

推荐阅读