我想在case_when中使用mutate_at,如下例所示:
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(case_when(
. %in% c(1,0,9) ~ TRUE
. %in% c(2,20,200) ~ FALSE
TRUE ~ as.character(.)
)))在. =调用中使用funs()的替代版本也不起作用。
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(. = case_when(
. %in% c(1, 0, 9) ~ TRUE
. %in% c(2, 20, 200) ~ FALSE
TRUE ~ as.character(.)
)))期望的结果
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(ifelse(. %in% c(1, 0, 9), TRUE, FALSE)))FALSE可以替换为第二个ifelse()调用,为了简洁起见,我没有包括它。
发布于 2017-12-19 13:28:50
我们需要,把每个案子分开。另外,如果我们将最后一个选项保留为character,那么TRUE/FALSE也应该是字符。不混合类型
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(. = case_when(
. %in% c(1, 0, 9) ~ TRUE,
. %in% c(2, 20, 200) ~ FALSE,
TRUE ~ TRUE
)))如果我们需要生成character类,并且如果这两种情况中的任何一种不正确,也需要将列作为字符返回,也许
mtcars %>%
mutate_at(.vars = vars(vs, am),
.funs = funs(. = case_when(
. %in% c(1, 0, 9) ~ "Yes",
. %in% c(2, 20, 200) ~ "No",
TRUE ~ as.character(.)
))) https://stackoverflow.com/questions/47887950
复制相似问题