我想将使用科学记数法和逗号作为小数分隔符的 csv 文件读取到数据框或向量中。然后我想使用这些数据进行进一步的计算。问题是 R 无法将数据识别为数字。如何将带有逗号的科学记数法转换为带有点的“正确”科学记数法,以便我可以用作数值?
我尝试了以下方法:
mferg_1<-read.csv("file.csv",sep=";",dec=",",header=FALSE)
当我查看数据框时,mferg_1会出现以下内容(摘录):
V2 V3 V4 V5
14 3,063E+01 1,775E-02 6,641E-07 3,747E-02
Run Code Online (Sandbox Code Playgroud)
gsub我认为我可以使用or替换逗号sub:
mferg_1<-sub(",",".",mferg_1)
但接下来mferg_1看起来像这样:
[1] "425" "388" "535" "472"
Run Code Online (Sandbox Code Playgroud)
我担心有一个简单的方法可以解决这个问题,但我还没有找到。
您的 csv(字符行)中可能有某些内容不允许将列转换为数字,因为该dec = ","参数应该有效。请参阅此示例以及您的数据:
text <- "3,063E+01 1,775E-02 6,641E-07 3,747E-02"
read.table(text=text, dec = ",")
V1 V2 V3 V4
1 30.63 0.01775 6.641e-07 0.03747
Run Code Online (Sandbox Code Playgroud)
现在,如果您无法识别问题(找到阻止 R 将您的列识别为数字的原因),您可以使用gsub.
df <- read.table(text=text)
df <- sapply(df, gsub, pattern = ",", replacement= ".")
df <- sapply(df, as.numeric)
V1 V2 V3 V4
3.063e+01 1.775e-02 6.641e-07 3.747e-02
Run Code Online (Sandbox Code Playgroud)