将带有科学记数法的 .csv 导入 R 以保留科学记数法?

Posted

技术标签:

【中文标题】将带有科学记数法的 .csv 导入 R 以保留科学记数法?【英文标题】:Importing .csv with scientific notation into R to preserve scientific notation? 【发布时间】:2017-08-29 19:25:55 【问题描述】:

我有一个如下所示的 CSV 数据框:

SNPID,chr,position,coded_all,noncoded_all,beta,SE,pval
rs10,7,92221824,a,c,0.0176,0.0182,0.3333
rs1000000,12,125456933,a,g,0.0195,0.0076,0.009999
rs10000010,4,21227772,t,c,0.0077,0.0062,0.215
rs10000012,4,1347325,c,g,0.0098,0.0093,0.2901

pval 列中的值介于 0 到 1 之间,其中许多是科学计数法。当我使用readrpval 作为numeric 将其导入R 时,pval 中的科学值不仅仅显示为数字。例如,9.996e-003 仅显示为 9.996

为了解决这个问题,我导入了带有p-val 作为字符的数据框,并使用as.numeric 将其强制转换为数字。这仍然导致了同样的问题。有没有其他办法解决这个问题?

【问题讨论】:

我无法复制您的问题。例如,dat <- read.table(text="rs10000012,4,1347325,c,g,0.0098,0.0093,2.901e-003", sep=",") 适用于最终变量。 我也无法使用readr 进行复制:read_csv("SNPID,chr,position,coded_all,noncoded_all,beta,SE,pval\nrs10000012,4,1347325,c,g,0.0098,0.0093,2.901e-003")。请提供reproducible example 文件很大......所以我最初读它时使用:crp_num 【参考方案1】:
df <- data.frame(pval = c("1e6", "9.996e-003"))

df$pval2 <- sapply(strsplit(as.character(df$pval), 'e'), 
               function(x) as.numeric(x[1]) * 10^as.numeric(x[2]) )

【讨论】:

以上是关于将带有科学记数法的 .csv 导入 R 以保留科学记数法?的主要内容,如果未能解决你的问题,请参考以下文章

Jasper Report 以 CSV 格式导出带有科学计数法的数字

SSIS CSV 导入:字符串转换为科学计数法

excel导入csv格式 身份证号就变成科学计数法了,怎么转变回去

以科学记数法将带有科学记数法的文本文件读取到 pandas 数据框

将 CSV 导入 MATLAB 的正确科学记数法

python csv writer用科学计数法写入数组