名前に特定の文字列が含まれている変数に適用される基準でデータフレームをフィルタリングする方法を見つけようとしています
以下のこの例では、 テスト結果のいずれかに「d」が含まれている被験者を見つけたいと思います。
d=structure(list(ID = c("a", "b", "c", "d", "e"), test1 = c("a", "b", "a", "d", "a"), test2 = c("a", "b", "b", "a", "s"), test3 = c("b", "c", "c", "c", "d"), test4 = c("c", "d", "a", "a", "f")), class = "data.frame", row.names = c(NA, -5L))
dplyrを使用して、を使用して1つずつ書き込むことができます
|
これはこのような小さな例では機能しますが、私の実際のデータでは時間がかかります。
library(dplyr) library(stringr) d %>% filter(str_detect(d$test1, "d") |str_detect(d$test2, "d") |str_detect(d$test3, "d") |str_detect(d$test4, "d") )
私が得た出力は、被験者b、d、eが基準を満たしていることを示しています。
ID test1 test2 test3 test4 1 b b b c d 2 d d a c a 3 e a s d f
出力は私が必要とするものですが、たとえば、「テスト」という単語を含む変数にフィルター基準を適用する方法がある場合など、より簡単な方法を探していました。
私は知っています
contain
dplyrの関数で特定の変数を選択しましたが、ここで試しましたが機能しませんでした。
d %>% filter(str_detect(contains("test"), "d"))
このコードを別の方法で書く方法はありますか、それとも同じ目標を達成する別の方法がありますか?
ありがとうございました
関連記事
- トップ10レコードを表示し、ElasticSearchの特定のフィールドにフィルターを適用したい
- パンダ:列のサブセットにフィルターを適用する
- 取得フィルター基準のシミュレーション-エラー| Google Apps Script
- T-SQLは、複数の基準でフィルタリングし、返されるものに優先順位を付ける方法を教えてください。
- Python Pandas groupby:値の条件に従ってフィルタリングして適用します
- Matlabでラプラシアンフィルターを適用する
- 条件に基づいてデータフレームにフィルターを適用する
- 行ごとに記述するのではなく、複数の変数に同じロジックを適用する最も簡単な方法は何ですか?
- Groupby Lambdaを使用しないフィルターの適用
ベースRでは使用できます
lapply
/sapply
:興味のある方
dplyr
以下の方法のいずれかを使用できるソリューション: