1

「あなたの年齢を教えてください」という質問に対する答えであるベクトルがあります。

問題は、答えが文字列であることです。ですから、善良な人々の答えは、さまざまなクレイジーな形をとります。

いくつかの答えは「32」です。"32年"; "32 年"; 「もうすぐ70年」; 「古い、非常に古い…………40代半ば」; 「2013 年 10 月 7 日までに、私は 31 歳になりました」; "18歳"; などなど

これらのデータを可能な限り数値に変換し、残りを NA に変換する方法はありますか? (何千もの観測があるため、手動で行うことは望ましくありません)

ありがとう!

4

1 に答える 1

2

これを使って:

L <- lapply(regmatches(s, gregexpr("[0-9\\.]+",s)), as.numeric)

結果 ( s <- "by 7th october 2013, i'm 31yo"):

# [[1]]
# [1]    7 2013   31

NA上記のリストに複数の数値がある数値ベクトルを取得するにはL、次を使用します。

result <- rep(NA, length(L))
ok <- sapply(L, length)==1
result[ok] <- unlist(L[ok])

ところで: 「\」を削除したい場合もあります。上記の正規表現で、整数以外の結果を回避します。

于 2013-09-20T19:33:49.510 に答える