带有浮点数的字符列不会转换为数字

时间:2018-09-18 16:14:58

标签: r floating-point type-conversion character

我有两个变量,str()在下面列出。我已经尽一切努力将这些列转换为数字,但是它们不会让步。

 $ ASKPRICE_B_B                  : atomic  4,47 4,49 4,47 4,36 ...
  ..- attr(*, "label")= chr "ASK PRICE_B_B"
  ..- attr(*, "format.stata")= chr "%9s"
 $ BIDPRICE_B_B                  : atomic  4,4 4,39 4,33 4,29 ...
  ..- attr(*, "label")= chr "BID PRICE_B_B"
  ..- attr(*, "format.stata")= chr "%9s"

我尝试过:

df$ASKPRICE_B_B <- as.numeric(as.character(df$ASKPRICE_B_B))

尝试:

df$ASKPRICE_B_B <- as.numeric(gsub(",", ".", gsub("\\.", "", df$ASKPRICE_B_B)))

尝试:

df$ASKPRICE_B_B <- sub(",", ".", df$ASKPRICE_B_B)

主要给出错误:

Error: unexpected numeric constant in "X1809$ASKPRICE_B_B"

我尝试了许多其他事情,但是我无法弄清楚出了什么问题。

我认为这与以逗号而不是点分隔浮点数有关。不知何故我什至无法用逗号代替逗号。

2 个答案:

答案 0 :(得分:1)

尝试: as.numeric((gsub(",", ".", df$ASKPRICE_B_B)))

PS:如@Gregor所建议,您可以在导入数据时设置文件中使用的小数点右边的字符(此处为dec = ",")。

答案 1 :(得分:0)

。是正则表达式字符。您需要使用\或fixed = TRUE对其进行转义。试试。

df$ASKPRICE_B_B <- as.numeric(gsub(",", ".", as.character(df$ASKPRICE_B_B), fixed = TRUE))