M.w*_*wol 1 r filter multiple-columns conditional-statements
我会尽量具体。我从 Web 应用程序中获取了大量数据集。我下载的每个数据集的列数可能会有所不同。我想过滤我的数据以查找异常值。所以我准备了一个清单:
outl <- c("God","Devil","Priest")
Run Code Online (Sandbox Code Playgroud)
现在让我们假设这是我的 df:
ID <- c(1,2,3,4)
Actor1<- c("Driver","","","")
Actor2<- c("President","Zombie","","")
Actor3<- c("CEO","Devil","","")
Actor4<-c("Priest","","Killer","Mayor")
Leng<- c(12,42,42,22)
Genre<-c("horror","criminal","drama","comedy")
df_ex <-data.frame(ID, Actor1, Actor2, Actor3, Actor4, Leng, Genre)
Run Code Online (Sandbox Code Playgroud)
我想过滤包含名称为“Actor”的任何列中异常值名称的行 ID(可能有 100 个,这就是为什么我不能使用 OR 运算符执行此操作的原因),例如:
df_ex %>%
filter(*anycolumn that contains string "Actor"* %in% outl)
Run Code Online (Sandbox Code Playgroud)
我希望得到 ID 为 1 和 2 的行
希望这足够清楚,提前致谢
您可以使用filter_at基于特定选定变量(在这种情况下,以“Actor”开头的变量)进行专门过滤。
library(tidyverse)
df_ex %>%
filter_at(vars(starts_with("Actor")), any_vars(. %in% outl))
Run Code Online (Sandbox Code Playgroud)
输出
ID Actor1 Actor2 Actor3 Actor4 Leng Genre
1 1 Driver President CEO Priest 12 horror
2 2 Zombie Devil 42 criminal
Run Code Online (Sandbox Code Playgroud)