Rに列subject1
とsubject2
(米国議会図書館の件名見出しを含む)を持つデータ フレームがあります。サブジェクトが承認済みリストに一致するかどうかをテストして、データ フレームをフィルタリングしたいと思います。たとえば、このデータ フレームがあるとします。
data <- data.frame(
subject1 = c("History", "Biology", "Physics", "Digital Humanities"),
subject2 = c("Chemistry", "Religion", "Chemistry", "Religion")
)
そして、これが承認されたサブジェクトのリストであるとします。
condition <- c("History", "Religion")
私がやりたいことは、subject1 または subject2 のいずれかでフィルタリングすることです。
subset <- filter(data, subject1 %in% condition | subject2 %in% condition)
これにより、必要に応じて、元のデータ フレームから項目 1、2、および 4 が返されます。
andロジックではなくorを使用して複数のフィールドでフィルター処理する最良の方法はありますか? より良い、より慣用的な方法があるに違いないように思えますが、それが何であるかはわかりません。
おそらく、質問をするより一般的な方法は、subject1 と subject2 を組み合わせた場合、あるベクトルの値が別のベクトルの値と一致するかどうかをテストする方法があるかということです。私は次のようなものを書きたいと思います:
subset <- filter(data, c(subject1, subject2) %in% condition)