为什么R在应用as.numeric时丢弃十进制?

ste*_*ano 3 r decimal

大家好,我有以下数据库:

ID Distance
M1_PRM    54,56
M1_PRM  4147,69
M1_PRM  1723,34
Run Code Online (Sandbox Code Playgroud)

我使用以下脚本替换"."中的",".在距离中,因为R不喜欢","(并且它有效):

mysub<-function(x)(sub(",",".",x))
DB<-(apply(DB, 2,mysub))
DB<-data.frame(DB)
Run Code Online (Sandbox Code Playgroud)

然后我需要转换DB $ Distance as.numeric因为我需要 tapply与sum一起使用,例如:

apply(DB$Distance,ID,sum)
Run Code Online (Sandbox Code Playgroud)

当我给

DB$Distance<-as.numeric(DB$Distance)

ID Distance
M1_PRM 54
M1_PRM 4147
M1_PRM 1723
Run Code Online (Sandbox Code Playgroud)

似乎R丢弃小数!有人知道出了什么问题吗?提前致谢!

jor*_*ran 5

另一种方法(如果您从文件中读取此内容):

dat <- read.table(text = "ID Distance
 M1_PRM    54,56
 M1_PRM  4147,69
 M1_PRM  1723,34",header = TRUE,sep = "",dec = ",")
> dat
      ID Distance
1 M1_PRM    54.56
2 M1_PRM  4147.69
3 M1_PRM  1723.34
Run Code Online (Sandbox Code Playgroud)