微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

读取具有字符类型变量的csv文件但扩展科学记数法readr

如何解决读取具有字符类型变量的csv文件但扩展科学记数法readr

我有一个带有变量 (csv) 的 id 文件。在 excel 中,当我检查单元格的格式时,有些单元格类型为 general,有些单元格类型为 scientific

#            id
# 1 ge189839898     #general format cell in excel
# 2   we7267178     #general format cell in excel
# 3     2.8E+12     #scientific format cell in excel

当我使用 R文件读入 read_csv 时,它认为该列是 character(它是我想要的),但这意味着 2.8E+12 是也是一个字符。

options(digits = 22,scipen = 9999)
library(tidyverse)
dfcsv <- read_csv("file.csv")
#where dfcsv looks like:
dfcsv <- data.frame(id = c("ge189839898","we7267178","2.8E+12"))
dfcsv
#            id
# 1 ge189839898     
# 2   we7267178    
# 3     2.8E+12  

有没有办法自动读入 csv 以便正确识别混合类型的变量,因此它会返回一个 character 变量但科学记数法被扩展:

#               id
# 1    ge189839898
# 2      we7267178
# 3  2800000000000

我不认为guess_max是我追求的here。我也不想使用 grep/sprintf 类型的解决方案(如果可能),因为我认为这是试图解决我不应该遇到的问题?我偶然发现了这些有问题的 id,因此我希望在阅读阶段采用一种自动方式来执行此操作。

最简洁的解决方案可能是进入 csv 文件并在那里进行转换,但我想通过 R 进行转换。

谢谢

解决方法

id <- c("ge189839898","we7267178","2.8E+12")
func <- function(x) {
  poss_num <- suppressWarnings(as.numeric(x))
  isna <- is.na(poss_num)
  x[!isna] <- format(poss_num[!isna],scientific = FALSE)
  x
}
func(id)
# [1] "ge189839898"   "we7267178"     "2800000000000"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。