A: %in% を使用してリスト内の値を含む行をフィルターする方法
R の%in%演算子で次の基本構文を使用して、リスト内の値を含む行をフィルターできます。
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names)
この特定の構文は、データ フレームをフィルター処理して、チーム列の値が、指定したteam_namesベクトルの 3 つの値のいずれかに等しい行のみを保持します。
次の例は、この構文を実際に使用する方法を示しています。
例: %in% を使用して、リスト内の値を含む行をフィルター処理する
R に、さまざまなバスケットボール チームに関する情報を含む次のデータ フレームがあるとします。
#create data frame
df <- data. frame (team=c('Mavs', 'Pacers', 'Mavs', 'Celtics', 'Nets', 'Pacers'),
points=c(104, 110, 134, 125, 114, 124),
assists=c(22, 30, 35, 35, 20, 27))
#view data frame
df
team points assists
1 Mavs 104 22
2 Pacers 110 30
3 Mavs 134 35
4 Celtics 125 35
5 Nets 114 20
6 Pacers 124 27
データ フレームをフィルターして、チーム列の値が次のチーム名のいずれかに等しい行のみを含めるとします。
- マブス
- ペイサーズ
- ネット
これを行うには、 %in%演算子を使用して次の構文を使用できます。
library (dplyr) #specify team names to keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is in list of team names to keep df_new <- df %>% filter(team %in% team_names) #view updated data frame df_new team points assists 1 Mavs 104 22 2 Pacers 110 30 3 Mavs 134 35 4 Nets 114 20 5 Pacers 124 27
チーム列にマブス、ペイサーズ、またはネッツの値が含まれる行のみが保持されることに注意してください。
チーム名のリストにないチーム名を含む行をフィルタリングする場合は、列名の前に感嘆符 ( ! ) を追加します。
library (dplyr) #specify team names to not keep team_names <- c(' Mavs ', ' Pacers ', ' Nets ') #select all rows where team is not in list of team names to keep df_new <- df %>% filter( ! team %in% team_names) #view updated data frame df_new team points assists 1 Celtics 125 35
チーム列の値が Mavs、Pacers、または Nets と等しくない行のみが保持されることに注意してください。
注: dplyr のフィルター関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、dplyr で他の一般的な操作を実行する方法を説明します。
dplyrを使用してグループごとに最初の行を選択する方法
dplyrを使って複数の条件でフィルタリングする方法
dplyrを使用して特定の文字列を含む行をフィルタリングする方法