使用千位分隔符将 data.frame (as.numeric) 中的字符更改为数字

Changing character to numeric in data.frame (as.numeric) with thousand separator

我使用 read.csv 导入了一个包含数值的 CSV 文件,其中 CSV 分隔符是“;”,小数分隔符是“,”,另外千位分隔符是“.”

Hist <- read.csv(file = "XXXX", header = T, sep = ";", dec =",", stringsAsFactors=FALSE)

我把它改成了 data.table ...

Hist <- data.table(Hist)

看起来像这样:

  Date        Value
# 2017-11-12  12.456,89
# 2017-11-10  13.234,99
# 2017-11-08  14.123,45

现在我想将 "Value" 列的 class/format 更改为数字,因为我想用它来计算。但是我尝试的一切都没有奏效。例如:

Hist[, Value := as.numeric(Value)]

正在创建错误:

Warning message: In eval(jsub, SDenv, parent.frame()) : NAs introduced by coercion

有人可以帮忙吗?

它们被读取为字符串。为了将它们转换为数字,请删除千位分隔符 (.),然后将小数分隔符 (,) 转换为点。

Hist$Value = as.numeric(gsub(",",".",(gsub("\.","",Hist$Value))))

与以下相同:

noPoints = gsub("\.", "", Hist$Value)
commaToPoint = gsub(",", ".", noPoints)
Hist$Value = as.numeric(commaToPoint)