2016-10-08 25 views
1

文字列から数字を抽出するために、Rにstringiというパッケージを使用しようとしています。文字列のパターンは次のとおりです。R:文字列から数字を抽出する

1 nomination 
2 wins 
1 win & 3 nominations 
2 wins & 1 nomination 
won 1 Oscar. Another 5 wins & 2 nominations 

各文字列の番号を抽出します。 またはの指名がの場合は、唯一の数字を勝利/指名として扱います。

はこれまでのところ、私は次のことを試してみました:

test <- "6 wins & 3 nominations." 

str_extract(test, regex="\\w*\\d\\w*") 

しかし、これが唯一の二番目の数字を含まない最初の数を、提供します。

stri_extract(test, regex="\\w*\\d+wins(\\s*+&+\\s*)(\\d)")はNAを与えます。

次のように動作しますが、stri_extractにより、以下の、最初の文字列を分割することによって、あまりにも扱いにくいと感じる:

t <- strsplit(test, "&") # split the string first 
win_num <- stri_extract(t[1], regex="\\d") 
nomination_num <- stri_extract(t[2], regex="\\d") # if exists 

1行で正規表現の方法を動作させるための任意の方法はありますか?ありがとう!

答えて

1

複数の数値を抽出する場合はstr_extract_allを使用し、listの出力を返します。

str_extract_all(test, "\\d+")[[1]] 
+1

実際には 'stri_extract_all(test、regex =" \\ d + ")[[1]]'です。 – TonyGW

+0

@TonyGWはい、私は 'regex ='を指定しませんでしたが、指定することなく動作します。 – akrun

関連する問題