无法在R中将字符转换为数字

时间:2013-02-05 04:10:28

标签: r

我从维基百科拉了一张桌子,但是我得到了一堆垃圾,里面有我正在寻找的人口数量。例如,当我之后的实际数字仅为8,244,910时,我得到“!B9840748934017,8,244,910”。我使用正则表达式使用sub('![[:alnum:]]*[[:space:]]', '', x)

清理了字符向量

这很好用,给我留下了字符向量“8,244,910”。当我尝试使用as.numeric将其转换为数字时,它会被强制转换为NA,无论我尝试什么转换,我都无法获得整数。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

尝试以下方法:

as.numeric(gsub('![[:alnum:]]*[[:space:]]|[[:punct:]]', '', x))

问题是您在第一次尝试的输出中有逗号。在转换为as.numeric之前需要删除这些内容。

答案 1 :(得分:3)

Ananda的解决方案确实可以完成工作,但可能出现问题:

  • [:punct:]还包含点字符(.),它是numeric的有效部分;
  • 笨重的正则表达式难以理解且更容易解决:

    # remove junk

    num_temp = sub('![[:alnum:]]*[[:space:]]', '', x)

    # remove all commas from numerics

    num = gsub(",", "", num_temp)