这是一个更多出于好奇的问题,因为我有一个有效的问题解决方案,但我真的很好奇。
我能够使用mutate/across/case_when在数据帧中重新编码多个变量(借助本网站上的答案,非常感谢!(
但我无法使用recode((执行同样的操作。为什么?
数据设置:
library(tidyverse)
df <- data.frame(
var1 = c(1, 2, 1, 2),
var2 = c(1, 2, 1, 2),
var3 = c(1, 2, 1, 2)
)
此代码有效:
df %>%
mutate(across(var1:var3, ~ case_when(.x == 1 ~ "No", .x == 2 ~ "Yes")))
此代码抛出一个关于意外的"="的错误
df %>%
mutate(across(var1:var3, ~ recode(.x, 1 = "No", 2 = "Yes")))
为什么?
当对数字进行重新编码时,必须将它们用引号或反引号括起来:
library(tidyverse)
df <- data.frame(
var1 = c(1, 2, 1, 2),
var2 = c(1, 2, 1, 2),
var3 = c(1, 2, 1, 2)
)
df %>%
mutate(across(var1:var3, ~ recode(.x, "1" = "No", "2" = "Yes")))
#> var1 var2 var3
#> 1 No No No
#> 2 Yes Yes Yes
#> 3 No No No
#> 4 Yes Yes Yes