删除具有特定字符串值的多行

mon*_*nes 0 r dplyr purrr

我有一个包含几百列的数据框。我想删除值为“跳过项目”或“”的选定列的行。

例如,请参见下文。理想情况下,我想删除“动物”和“保险”列包含“跳过的项目”或“”的所有行,但不希望这适用于其他列。

在我的实际数据框中,大约有 34 列我想删除带有这些字符串的列,还有 128 列我不想删除。建议将不胜感激。

dat <- data.frame(animal=c("dog","cat","Item skipped", ""), Insurance=c("Y", "N","Item skipped",""), condition = c("",
                  "Asthma","Item skipped",""), age = rep(c(6,10), each = 2))
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 5

您可以使用filter_at选定的列或列范围

library(dplyr)

dat %>%
  filter_at(vars(animal,Insurance), all_vars(!. %in% c("Item skipped", "")))

#  animal Insurance condition age
#1    dog         Y             6
#2    cat         N    Asthma   6
Run Code Online (Sandbox Code Playgroud)

或者你可以使用基础R rowSums

cols <- c('animal', 'Insurance')
dat[rowSums(dat[cols] == "Item skipped" | dat[cols] == "") == 0, ]
Run Code Online (Sandbox Code Playgroud)