gpt4 book ai didi

r - 使用 `any` 和 `all` 作为对 `case_when` 内多个元素的逻辑测试?

转载 作者:行者123 更新时间:2023-12-04 08:45:10 25 4
gpt4 key购买 nike

从下面的示例中可以看出,A 列有多个不同长度的元素。我正在尝试使用 case_whenmutate调用以创建“标记”这些多个元素的子集的分类列。
例如,我们创建一个虚拟数据集:

df <- tribble(
~A, ~B,
c("a", "b", "c", "1", "2"), "alpha",
c("b", "c", "d", "1"), "beta",
c("c", "d", "1", "2", "3"), "gamma"
)
然后评估我正在使用的子集成员资格 anyall超过 %in%打电话,像这样:
result <- df %>%
mutate(
test = case_when(all(c("a","1") %in% A) ~ "x",
any(c("beta","gamma") %in% B) ~ "y")
)
在这里,我期待 result$test显示 x , y , y .相反,我得到了 NA s。
我的方法可行吗?如果不是,原因是什么,我可以实现的最有效的替代策略是什么?

最佳答案

我猜你可能需要 rowwise

df %>%
rowwise() %>%
mutate(test = case_when(all(c("a","1") %in% A) ~ "x",
any(c("beta","gamma") %in% B) ~ "y"))
这使
  A         B     test
<list> <chr> <chr>
1 <chr [5]> alpha x
2 <chr [4]> beta y
3 <chr [5]> gamma y

关于r - 使用 `any` 和 `all` 作为对 `case_when` 内多个元素的逻辑测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64362653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com