Rでsub()とgsub()を使う方法

はじめに

Rのsub()とgsub()の関数は、特定の文字列でベクトルやデータフレーム内の文字列や文字を置換します。これらの関数は、大規模なデータセットでの変更を行う際に便利です。

この記事では、Rのsub()関数とgsub()関数の使い方について探っていきます。

前提条件

このチュートリアルを完了するためには、次が必要です:

  • R installed locally or on a server.

sub()とgsub()の構文

sub()の基本的な構文は次のようです。

sub(pattern, replacement, x)

gsub()の基本構文は次の通りです。

gsub(pattern, replacement, x)

sub()およびgsub()の構文は、パターン、置換、およびベクトルまたはデータフレームが必要です。

  • pattern: The pattern or the string which you want to be substituted.
  • replacement: A input string to substitute the pattern string.
  • x: A vector or a data frame to substitute the strings.

パターンは正規表現(regex)の形式でもあることがあります。

今や構文に精通しているあなたは、実装に進むことができます。

Rのsub()関数

Rのsub()関数は、ベクトルやデータフレーム内の文字列を入力または指定した文字列で置換します。

ただし、sub()関数の制限は、最初の出現しか置換しないことです。

1. sub()関数の使用

この例では、sub() 関数を使って文字列のパターンを置換文字列で置き換える方法を学びます。

# the input vector 
df<-"R is an open-source programming language widely used for data analysis and statistical computing."

# the replacement
sub('R','The R language',df)

このコマンドを実行すると、次の出力が生成されます。

Output

“The R language is an open-source programming language widely used for data analysis and statistical computing.”

sub()関数は、ベクトル内の文字列’R’を文字列’The R language’で置き換えます。

この例では、1つのパターンマッチングの発生がありました。もし複数のパターンマッチが発生した場合には、どのような影響があるか考えてみてください。

# the input vector
df<-"In this tutorial, we will install R and show how to add packages from the official Comprehensive R Archive Network (CRAN)."

# the replacement
sub('R','The R language',df)

このコマンドを実行すると、以下の出力が生成されます。

"In this tutorial, we will install The R language and show how to add packages from the official Comprehensive R Archive Network (CRAN)."

この例では、sub() 関数が文字列 ‘R’ の最初の出現箇所を ‘The R language’ で置き換えたことが観察できます。しかし、文字列の次の出現箇所は変わらないままです。

2. データフレームと sub() 関数を使用する

sub()関数は、データフレームでも動作します。

# creating a data frame
df<-data.frame(Creature=c('Starfish','Blue Crab','Bluefin Tuna','Blue Shark','Blue Whale'),Population=c(5,6,4,2,2))

# data frame
df

以下のデータフレームが作成されます。

      Creature Population
1     Starfish          5
2    Blue Crab          6
3 Bluefin Tuna          4
4   Blue Shark          2
5   Blue Whale          2

その後、「青」という文字を「緑」という文字に置き換えてください。

# substituting the values
sub('Blue','Green',df)

このコマンドを実行すると、以下の出力が生成されます。

Output

“c(\”Starfish\”, \”Green Crab\”, \”Bluefin Tuna\”, \”Blue Shark\”, \”Blue Whale\”)” “c(5, 6, 4, 2, 2)”

「Blue」のすべての出現箇所を「Green」に置き換える特定の列を指定することもできます。

# substituting the values
sub('Blue','Green',df$Creature)

このコマンドを実行すると、以下の出力が生成されます。

Output

“Starfish” “Green Crab” “Greenfin Tuna” “Green Shark” “Green Whale”

すべての「ブルー」という文字列は「グリーン」と置き換えられました。

Rのgsub()関数

Rのgsub()関数は、置換操作に使用されます。この関数は、入力を取り、指定された値に対して置き換えます。

sub()関数とは異なり、gsub()関数は全てのマッチに対してグローバルな置換を適用します。

gsub()関数を使用する。

この例では、gsub() 関数を使用して、文字列のパターンを置換文字列で置き換える方法を学びます。

# the input vector
df<-"In this tutorial, we will install R and show how to add packages from the official Comprehensive R Archive Network (CRAN)."

これは複数回「R」と書かれたデータです。

# substituting the values using gsub()
gsub('R','The R language',df)
Output

“In this tutorial, we will install The R language and show how to add packages from the official Comprehensive The R language Archive Network (CThe R languageAN).”

全ての「R」のインスタンスが置換されました(「Comprehensive R Archive Network」や「CRAN」の中にあるインスタンスも含む)。gsub()関数は、パラメータに一致する全ての単語を見つけて、それを入力単語や値で置き換えます。

2. データフレームでgsub()関数を使用する

gsub()関数は、データフレームでも動作します。

# creating a data frame
df<-data.frame(Creature=c('Starfish','Blue Crab','Bluefin Tuna','Blue Shark','Blue Whale'),Population=c(5,6,4,2,2))

‘Deep Sea ‘という値をCreature列の先頭に付けてみましょう。

# substituting the values
gsub('.*^','Deep Sea ',df$Creature)

このコマンドを実行すると、次の出力が生成されます。

Output

“Deep Sea Starfish” “Deep Sea Blue Crab” “Deep Sea Bluefin Tuna” “Deep Sea Blue Shark” “Deep Sea Blue Whale”

この例では、gsub()関数が正規表現(regex).*^を使用しています。これは文字列の先頭位置のパターンです。

結論

この記事では、Rでsub()関数とgsub()関数の使い方について探求しました。これらの関数は、文字列またはベクトルやデータフレーム内の文字を特定の文字列で置き換えるために使用されます。sub()関数は最初の一致に対して適用されます。gsub()関数は全ての一致に対して適用されます。

「replace()をRで使う方法」で学習を続けてください。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds