【发布时间】:2021-05-16 09:11:05
【问题描述】:
我有两组变量,例如变量a 和变量a_avail。我正在尝试根据a_avail 的值更改a 的值,我想知道这是否可以使用across 和glue 来完成。
这是我尝试过的。没有产生错误,但胶水似乎没有拾取.x_avail 的值,因为所有返回值都是 NA:
library(tidyverse)
df <- tibble(a = c(0, 1, 0, 0, 0),
a_avail = c(1, 1, 1, 0, 0),
b = c(1, 1, 1, 0, 0),
b_avail = c(1, 0, 0, 1, 0))
df2 <- df %>%
mutate(across(.cols = c(a, b),
.fns = ~case_when(
glue::glue("{.x}_avail") == 1 ~ .x,
glue::glue("{.x}_avail") == 0 ~ as.numeric(NA)
),
.names = "{.col}_new"))
df2
#> # A tibble: 5 x 6
#> a a_avail b b_avail a_new b_new
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0 1 1 1 NA NA
#> 2 1 1 1 0 NA NA
#> 3 0 1 1 0 NA NA
#> 4 0 0 0 1 NA NA
#> 5 0 0 0 0 NA NA
由reprex package (v0.3.0) 于 2021-02-12 创建
【问题讨论】: