使用千位分隔符将 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)
我使用 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)