1

ウィキペディアからテーブルを取り出しましたが、探している人口数のジャンクがたくさんあります。たとえば、実際の番号が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

アナンダのソリューションは仕事を成し遂げますが、何かがうまくいかないかもしれません:

  • [: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 に答える