R データフレームの検索と置換

UB3/informatics/r/dataframe_replace

このページの最終更新日: 2025/12/22

  1. gsub を使う方法
    • 列を指定して置換
    • データフレーム全体で置換
  2. 複数の文字列を msub でまとめて置換する方法
  3. dplyr パッケージを使う方法

広告

gsub を使う方法

文字と数字の両方が入っているデータを例にしたいので、組み込みデータセット の chickwts を使う。エサと体重の関係を示したデータである。

R 組み込みデータセット chickwts

列を指定して置換

feed の列を指定して、"bean" を "mame" に置換してみる。gsub() 関数を使用する。

gsub() の基本形は gsub(pattern = "bean", replacement = "mame", 置換するベクター) である。同一ベクター内で置換したい場合は、A <- gsub(pattern = "bean", replacement = "mame", A) とすればよい。

pattern = や replacement = を省略して、gsub("bean", "mame", 置換するベクター) のように書くことも可能。私は、混乱を防ぐためなるべく入れるようにしている。

fixed = T は、" " 内にある文字列をそのまま使用するという意味である。たとえば ".0" のようにすると、. が正規表現の「任意の一文字」に相当するため、前に何かの文字がある全ての 0 が置換の対象になってしまう。ドットのみを検索したい場合は、エスケープで "\\.0" と書くか、fixed = T を入れる必要がある。gsub で正規表現を使いたい場合はあまりないので、私は基本的に fixed = T を入れるようにしている。

df <- chickwts
df["feed"] <- lapply(df["feed"], gsub, pattern="bean", replacement = "mame", fixed = T)

horsemame に変換されているのがわかる。数字も対象にできるようで、weight を対象に 1 を 100 に変換したりするのも大丈夫だった。

R 組み込みデータセット chickwts

データフレーム全体で置換

これは cars を使ってみよう。

Rの組み込みデータセット cars

df <- cars
df <- data.frame(lapply(df, function(x){gsub(pattern = "1", replacement = "10", x)}), stringsAsFactors = FALSE)

これで、数字の 1 が全て 10 に変換される。


広告

「あとがき」で当サイトを参考にしたと書いてくれているラノベです。Kindle Unlimited で読めました。ストーリーと文章が良く、面白かったです。

複数の文字列を mgsub でまとめて置換する方法

列指定で、gsub のかわりに mgsub::mgsub を使うと、pattern, replacement ともにベクターで指定で きる。

df <- chickwts
df["feed"] <- lapply(df["feed"], mgsub::mgsub, pattern = c ("bean", "seed"), replacement = c("mame", "tane"))

これでいけると思ったんだが、エラーになる。あとで検討。

dplyr パッケージを使う方法

更新予定。とりあえずは文献 1 を参照のこと。


広告

References

  1. Rで複数の異なる要素を一括で置換する
  2. Rのデータフレームで検索と置換をする方法

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。