【发布时间】:2022-01-22 09:25:36
【问题描述】:
我正在使用dplyr 中的case_when() 创建以下列result。
z <- tibble(a = c(40, 30, NA),
b = c(NA, 20, 10))
z %>%
mutate(result = case_when(
!is.na(a) ~ a,
is.na(a) & !is.na(b) ~ b
)
)
上面给出了以下内容:
a b result
<dbl> <dbl> <dbl>
1 40 NA 40
2 30 20 30
3 NA 10 10
但是,我想同时创建另一列result_logic,它显示result 中的值从哪里提取(a 或b)。输出将如下所示。
a b result result_logic
<dbl> <dbl> <dbl> <chr>
1 40 NA 40 a
2 30 20 30 a
3 NA 10 10 b
有什么方法可以捕获在case_when() 中评估的这个逻辑?
谢谢
【问题讨论】:
-
我认为您需要进行两次逻辑检查,因为
mutate每次都创建一个变量。在一个mutate函数中进行两项检查很容易(在下面的答案中添加) - 您是否有特殊原因要从一个case_when测试中获得两列输出?