使用recode()与mutate()和across()对r中的多个变量进行重新编码



这是一个更多出于好奇的问题,因为我有一个有效的问题解决方案,但我真的很好奇。

我能够使用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

相关内容

  • 没有找到相关文章

最新更新