Мы можем использовать rowSums
df$new <- +(rowSums(df == "mother" | df == "daughter" | df == "father", na.rm = TRUE) > 0)
df
# var1 var2 var3 var4 new
#1 mother daughter house tea 1
#2 mother father daughter <NA> 1
#3 house tea pencil paper 0
ИЛИ lapply
df$new <- +(Reduce(`|`, lapply(df, `%in%`, c("mother", "daughter", "father"))))
Мы также можем использовать pmap_int
из purrr
library(dplyr)
library(purrr)
df %>%
mutate(new = pmap_int(., ~+(any(c(...) %in% c("mother", "daughter", "father")))))
данные
df <- structure(list(var1 = c("mother", "mother", "house"), var2 =
c("daughter", "father", "tea"), var3 = c("house", "daughter", "pencil"),
var4 = c("tea", NA, "paper")), row.names = c("1", "2", "3"), class = "data.frame")