【发布时间】:2021-09-20 06:34:19
【问题描述】:
我想不出来这个。假设我想创建一个条件变量,每当数据框中的任何行具有包含目标的列时都会返回一个命中。
总是更容易用例子来说明。这是玩具数据
set.seed(10)
d <- data.frame(a = sample(x = letters[1:2],
size = 10,
replace = T),
b = sample(x = letters[1:2],
size = 10,
replace = T),
c = sample(x = letters[1:2],
size = 10,
replace = T))
d
# output
# a b c
# 1 a a a
# 2 a b b
# 3 b a b
# 4 b a a
# 5 b b b
# 6 a a a
# 7 b b a
# 8 b b b
# 9 a b b
# 10 a a a
现在我想创建一个列,当任何行中有a 时返回anyA,当没有a 时返回noA。输出看起来像这样
# a b c anyA
# 1 a a a anyA
# 2 a b b anyA
# 3 b a b anyA
# 4 b a a anyA
# 5 b b b noA
# 6 a a a anyA
# 7 b b a anyA
# 8 b b b noA
# 9 a b b anyA
# 10 a a a anyA
我尝试了以下代码,使用、mutate、rowwise、c_across 和 case_when
d %>%
rowwise() %>%
mutate(anyA = case_when(c_across(cols = everything(),
any(.x == "a") ~ "anyA",
TRUE ~ "noA")))
但它没有用。我真的不知道我在做什么。有什么想法吗?
附言我特别不想命名case_when 中的所有列。在我的真实示例中,有很多列可以应用条件。
【问题讨论】: