将带有科学记数法的 .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 之间,其中许多是科学计数法。当我使用readr
和pval
作为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 格式导出带有科学计数法的数字
excel导入csv格式 身份证号就变成科学计数法了,怎么转变回去