Rで特定の文字間の文字列を抽出する方法
次のメソッドを使用して、R の特定の文字間の文字列を抽出できます。
方法 1: Base R を使用して特定の文字間の文字列を抽出する
gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)
方法 2: stringr を使用して特定の文字間の文字列を抽出する
library (stringr) str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]
これら 2 つの例では、 char1とchar2の間の文字列をmy_stringに抽出します。
次の例は、次のデータ フレームで各メソッドを実際に使用する方法を示しています。
#create data frame
df <- data. frame (team=c('team Mavs pro', 'team Heat pro', 'team Nets pro'),
dots=c(114, 135, 119))
#view data frame
df
team points
1 Mavs pro team 114
2 team Heat pro 135
3 pro Nets team 119
例 1: Base R を使用して特定の文字間の文字列を抽出する
次のコードは、データ フレームのチーム列の各行のチーム文字とプロ文字の間の文字列を抽出する方法を示しています。
#create new column that extracts string between team and pro df$team_name <- gsub(" .*team (.+) pro.*", "\\1 ", df$team) #view updated data frame df team points team_name 1 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
team_nameという新しい列には、データ フレームのチーム列の各行のチーム文字とプロ文字の間の文字列が含まれることに注意してください。
関連: R の gsub() の概要
例 2: stringr パッケージを使用して特定の文字間の文字列を抽出する
次のコードは、R のstringrパッケージのstr_match()関数を使用して、データ フレームのチーム列の各行のチーム文字とプロ文字の間の文字列を抽出する方法を示しています。
library (stringr) #create new column that extracts string between team and pro df$team_name <- str_match(df$team, " team\\s*(.*?)\\s*pro ")[,2] #view updated data frame df team points team_name 1 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
team_nameという新しい列には、データ フレームのチーム列の各行のチーム文字とプロ文字の間の文字列が含まれることに注意してください。
これは、ベース R でgsub()関数を使用した結果に対応します。
str_match()関数は、最初の列に元の文字列が含まれ、2 番目の列に対象の部分文字列が含まれる行列を返すことに注意してください。
したがって、 str_match()関数によって返された行列から 2 番目の列のみを抽出するには、[,2]を使用する必要があります。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。