1

我从 Wikipedia 中提取了一张表格,但我得到了一堆垃圾,其中包含我正在寻找的人口数量。例如,当我所追求的实际数字仅为 8,244,910 时,我得到“!B9840748934017Â 8,244,910” 。我已经用正则表达式清理了字符向量,使用sub('![[:alnum:]]*[[:space:]]', '', x)

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

4

2 回答 2

6

尝试以下操作:

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

问题是您第一次尝试的输出中有逗号。在转换为as.numeric.

于 2013-02-05T04:16:32.770 回答
3

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

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

    # remove junk

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

    # remove all commas from numerics

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

于 2013-02-05T16:37:42.960 回答