Dplyrを使用して特定の文字列を含む行をフィルタリングする方法


多くの場合、R のデータ フレーム内の特定の文字列を含む行をフィルター処理する必要がある場合があります。幸いなことに、これはdplyrパッケージのfilter()関数と Base R のgrep()関数を使用して簡単に実行できます。

このチュートリアルでは、次のデータ フレームを使用して、これらの関数の実際の使用例をいくつか示します。

 #create data frame
df <- data.frame(player = c('P Guard', 'S Guard', 'S Forward', 'P Forward', 'Center'),
                 points = c(12, 15, 19, 22, 32),
                 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12
5 Center 32 11

例 1: 特定の文字列を含む行をフィルターする

次のコードは、特定の文字列を含む行をフィルターする方法を示しています。

 #load dplyr package
library(dplyr)

#filter rows that contain the string 'Guard' in the player column
df %>% filter ( grepl ('Guard', player))

   player points rebounds
1 P Guard 12 5
2 S Guard 15 7

関連: R の grep() と grep() の比較: 違いは何ですか?

例 2: 少なくとも 1 つの文字列を含む行をフィルターする

次のコードは、プレーヤー列に「Guard」または「Forward」を含む行をフィルターする方法を示しています。

 #filter rows that contain 'Guard' or 'Forward' in the player column
df %>% filter ( grepl ('Guard|Forward', player))

     player points rebounds
1 P Guard 12 5
2 S Guard 15 7
3S Forward 19 7
4 P Forward 22 12

次のコードは、リーダー列に「P」または「Center」を含む行をフィルターする方法を示しています。

 #filter rows that contain 'P' or 'Center' in the player column
df %>% filter ( grepl ('P|Center', player))

     player points rebounds
1 P Guard 12 5
2 P Forward 22 12
3 Center 32 11

例 3: 特定の文字列を含む行をフィルターする

次のコードは、プレーヤー列に「Guard」を含む行をフィルターする (つまり、削除する) 方法を示しています。

 #filter out rows that contain 'Guard' in the player column
df %>% filter (! grepl ('Guard', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12
3 Center 32 11

次のコードは、プレーヤー列に「Guard」または「Center」を含む行をフィルターする (つまり、削除する) 方法を示しています。

 #filter out rows that contain 'Guard' or 'Center' in the player column
df %>% filter (! grepl ('Guard|Center', player))

     player points rebounds
1S Forward 19 7
2 P Forward 22 12

その他の R チュートリアルはここで見つけることができます。

コメントを追加する

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