0

文から数値を抽出し、それらの数値を数値配列としてまとめようとしています。例えば、

  string<-"  The Team:  $74,810 TOTAL RAISED SO FARJOIN THE TEAM Vik Muniz 
             Amount Raised: $70,560   71% Raised of $100,000 Goal CDI International,
             Inc.  Amount Raised: $2,070  Robert Goodwin Amount Raised: $1,500 
             30% Raised of $5,000 Goal Marcel Fukayama Amount Raised: 
             $210  Maitê Proença Amount Raised: $140  
             Thiago Nascimento Amount Raised: $120  
             Lydia Kroeger Amount Raised: $80  "          

続行するために、最初にカンマを削除して、数値を簡単に抽出できるようにしました。

    string.nocomma <- gsub(',', '', string)

次に、数値を数値ベクトルとしてまとめようとしました。

    fund.numbers <-unique(as.numeric(gsub("[^0-9]"," ",string.nocomma),""))       

ここに問題があります:

  1. R は、最後のコマンドの後にエラーをスローしています。エラーは次のとおりです。

    Warning message:
    In unique(as.numeric(gsub("[^0-9]", " ", website.fund.nocomma),  :
    NAs introduced by coercion
    
  2. 上記のエラーを修正して数値ベクトルを取得しても、数値ベクトルを数値配列に変換する方法がわかりません。

    誰かが私を助けることができますか?ありがとう、

4

2 に答える 2

2

あなたはこのようにすることができます:

## Extract all numbers and commas
numbers <- unlist(regmatches(string, gregexpr("[0-9,]+", string)))
## Delete commas
numbers <- gsub(",", "", numbers)
## Delete empty strings (when only one comma has been extracted)
numbers <- numbers[numbers != ""]
numbers

# [1] "74810"  "70560"  "71"     "100000" "2070"   "1500"   "30"    
# [8] "5000"   "210"    "140"    "120"    "80"
于 2013-10-17T19:17:22.007 に答える
1

gsub() を適用すると、数字とスペースを含む文字列になるため、直接数値に変換することはできません。必要なものは数値ベクトルです。私はそれgregexprを取得するために使用する方が良いと思います:

## get list of string with numbers only
> res = regmatches(string.nocomma, gregexpr("([0-9]+)", string.nocomma))
## convert it to numeric
> res = as.numeric(unlist(res))

 [1]  74810  70560     71 100000   2070   1500     30   5000    210    140    120
[12]     80
于 2013-10-17T19:17:40.873 に答える