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 つの例では、 char1char2の間の文字列を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 で他の一般的なタスクを実行する方法について説明します。

Rで特定の文字列を含む列を選択する方法
R の文字列から文字を削除する方法
Rで文字列内の文字の位置を見つける方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です