web-dev-qa-db-ja.com

Rのdplyrフィルターで「含まない」を指定する方法

私はRが初めてです。

SE_CSVLinelist_cleanというテーブルを使用して、where_case_travelled_1という変数に文字列"Outside Canada" OR "Outside province/territory of residence but within Canada"が含まれていない行を抽出します。次に、SE_CSVLinelist_filteredという新しいテーブルを作成します。

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
where_case_travelled_1 %in% -c('Outside Canada','Outside province/territory of residence but within Canada'))

上記のコードは、「-c」ではなく「c」を使用するだけで機能します。
では、国または県以外の行を本当に除外したい場合、どうすれば上記を指定できますか?

どうもありがとう

36
ayk

%in%は、TRUEおよびFALSEの論理ベクトルを返すことに注意してください。否定するには、論理ステートメントの前に!を使用できます。

SE_CSVLinelist_filtered <- filter(SE_CSVLinelist_clean, 
 !where_case_travelled_1 %in% 
   c('Outside Canada','Outside province/territory of residence but within Canada'))

-c(...)を使用した元のアプローチに関して、-は「数値または複素数ベクトル(またはそれらに強制変換できるオブジェクト)で算術演算を実行する」単項演算子です(help("-")から)。数値または複素数に強制できない文字ベクトルを扱っているため、-を使用できません。

66
fishtank