dplyrで特定の観測と同じようなフィルタを実行しようとしています。Dplyr複数の類似条件
database %>% dplyr::filter(SOURCE %like% c('%ALPHA%', '%BETA%', '%GAMMA%'))
おかげ
dplyrで特定の観測と同じようなフィルタを実行しようとしています。Dplyr複数の類似条件
database %>% dplyr::filter(SOURCE %like% c('%ALPHA%', '%BETA%', '%GAMMA%'))
おかげ
あなたはどれがあればマッチします、ALPHA|BETA|GAMMA
でgrepl
を使用することができます:私は、私は結果を返しません。これは、次を使用しようとした
Test <- sqldf("select * from database
Where SOURCE LIKE '%ALPHA%'
OR SOURCE LIKE '%BETA%'
OR SOURCE LIKE '%GAMMA%'")
としてsqldf使用することができますのパターンは、SOURCEカラムに含まれています。あなたはそれが大文字と小文字を区別したい場合は
database %>% filter(grepl('ALPHA|BETA|GAMMA', SOURCE))
、grepl
でignore.case = T
を追加します。
%like%
はdata.table
パッケージからです。
Warning message:
In grepl(pattern, vector) :
argument 'pattern' has length > 1 and only the first element will be used
%like%
オペレータは、正規表現を使用して文字列のマッチングを行いgrepl
機能、単なるラッパーです:あなたはおそらくも、この警告メッセージを見ています。したがって、%
は必要ではなく、実際にはパーセント記号を表します。
'ALPHA|BETA|GAMMA'
を使用して、それらを組み合わせたり、3つのステートメントにテストを破ることができる
:
database %>%
dplyr::filter(
SOURCE %like% 'ALPHA' |
SOURCE %like% 'BETA' |
SOURCE %like% 'GAMMA'
)
これは私のデータセットで完璧な仕事をし、一致したsqldf、ありがとう! –