我正在使用case_when()fromdplyr创建以下列,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
)
)
Run Code Online (Sandbox Code Playgroud)
上面给出了以下内容:
a b result
<dbl> <dbl> <dbl>
1 40 NA 40
2 30 20 30
3 NA 10 10
Run Code Online (Sandbox Code Playgroud)
但是,我想同时创建另一列 ,它显示从中提取result_logic值的位置(a 或 b)。result输出看起来像这样。
a b result result_logic
<dbl> <dbl> <dbl> <chr>
1 40 NA 40 a
2 30 20 30 a
3 NA 10 10 b
Run Code Online (Sandbox Code Playgroud)
有什么方法可以捕获在 中评估的逻辑case_when()?
谢谢
像下面这样的东西吗?
\nlibrary(tidyverse)\n\nz <- tibble(a = c(40, 30, NA), \n b = c(NA, 20, 10))\n\nz %>%\n mutate(result = case_when(\n !is.na(a) ~ str_c(a, "a", sep = " "),\n is.na(a) & !is.na(b) ~ str_c(b, "b", sep = " "))) %>% \n separate(result, into=c("result", "result_logic"), convert = T)\n\n#> # A tibble: 3 \xc3\x97 4\n#> a b result result_logic\n#> <dbl> <dbl> <int> <chr> \n#> 1 40 NA 40 a \n#> 2 30 20 30 a \n#> 3 NA 10 10 b\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |