case_when 使用包含而不是声明每个变量来评估
case_when using contains instead of declaring each variable to evaluate
我想尝试通过后缀 _num 来避免说明要评估的变量。 是可能的,但此代码需要更新,因为它现在应该使用 across。
df %<>% mutate(`Manipulation1` = case_when(
A1_num > 2 ~ "support",
B1_num > 2 ~ "support",
C1_num > 2 ~ "support",
A4_num > 2 ~ "support",
B4_num > 2 ~ "support",
C4_num > 2 ~ "support",
same 6 variables == 2 ~ "neither",
same 6 variables < 2 ~ "reject",
TRUE~ NA_character_))
因为它正在评估列中的响应,而不是变量名称。
我们可以用if_any
换行
library(dplyr)
library(stringr)
nm1 <- str_c(LETTERS[1:3], rep(c(1, 4), each = 3), "_num")
df <- df %>%
mutate(s1 = if_any(all_of(nm1), ~ . > 2),
n1 = if_any(all_of(nm1), ~ . == 2),
r1 = if_any(all_of(nm1), ~ . < 2),
Manipulation1 = case_when(s1 ~ "support",
n1 ~ "neither",
r1 ~ "reject",
TRUE ~ NA_character_),
s1 = NULL, n1 = NULL, r1 = NULL)
我想尝试通过后缀 _num 来避免说明要评估的变量。
df %<>% mutate(`Manipulation1` = case_when(
A1_num > 2 ~ "support",
B1_num > 2 ~ "support",
C1_num > 2 ~ "support",
A4_num > 2 ~ "support",
B4_num > 2 ~ "support",
C4_num > 2 ~ "support",
same 6 variables == 2 ~ "neither",
same 6 variables < 2 ~ "reject",
TRUE~ NA_character_))
我们可以用if_any
library(dplyr)
library(stringr)
nm1 <- str_c(LETTERS[1:3], rep(c(1, 4), each = 3), "_num")
df <- df %>%
mutate(s1 = if_any(all_of(nm1), ~ . > 2),
n1 = if_any(all_of(nm1), ~ . == 2),
r1 = if_any(all_of(nm1), ~ . < 2),
Manipulation1 = case_when(s1 ~ "support",
n1 ~ "neither",
r1 ~ "reject",
TRUE ~ NA_character_),
s1 = NULL, n1 = NULL, r1 = NULL)