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

时间:2017-11-12 10:18:27

标签: r csv numeric read.csv

我使用read.csv导入带有数字值的CSV文件,其中CSV分隔符为&#34 ;;",小数分隔符为","另外,thousend seperator是"。"

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

现在我要更改列的类/格式&#34; Value&#34;因为我想用它计算数字。但我尝试的一切都没有奏效。例如:

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

正在创建错误:

  

警告讯息:   在eval(jsub,SDenv,parent.frame())中:强制引入的NA

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

它们被读作字符串。要将它们转换为数字,请删除千位分隔符(。),然后将小数点分隔符(,)转换为某个点。

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

与以下内容相同:

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