簡體   English   中英

使用帶有 mutate() 和 across() 的 recode() 對 r 中的多個變量進行重新編碼

[英]Using recode() with mutate() and across() to recode multiple variables in r

這是一個更多出於好奇的問題,因為我有一個解決我的問題的有效方法,但我真的很好奇。

我能夠使用 mutate/across/case_when 重新編碼 dataframe 中的多個變量(借助本網站上的答案,謝謝!)

但是我無法使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM