簡體   English   中英

在 Tidyverse 中“使用 mutate_at”重新編碼多個變量之間的相同因子水平值

[英]Recode same factor levels values among multiple variables "with mutate_at" in Tidyverse

我有幾個值“1”和“2”的因子變量需要重新編碼為“是”和“否”。 Tidyverse mutate_atfct_recode似乎是正確的工具。 然而,

dataframe %>%
 mutate_at(vars (var1, var9, var17) =
              fct_recode(vars(var1, var9, var17), 
                         "Yes" = "1",
                         "No" = "2"))

Error: unexpected ')' in:
"                         "Yes" = "1",
                         "No" = "2"))"

和,

dataframe %>%
 mutate_at(vars (var1, var9, var17), 
              funs(fct_recode(vars(var1, var9, var17), 
                         "Yes" = "1",
                         "No" = "2")))

Error: `f` must be a factor (or character vector).

有人可以指出我的錯誤還是我使用mutate_atvarsfct_recode錯誤? tidyverse 中是否有更好的方法來重新編碼多個變量的相同因子水平,這是整理數據中非常常見的任務。

問題是您在mutate_at()語法。

library(dplyr)

首先,我創建一個示例數據集:

set.seed(666)
dataframe <- data.frame(var1 = sample(c("1", "2"), 5, replace = TRUE),
                        var9 = sample(c("1", "2"), 5, replace = TRUE),
                        var17 = sample(c("1", "2"), 5, replace = TRUE))

  var1 var9 var17
1    2    2     2
2    1    2     1
3    2    1     1
4    1    1     1
5    1    1     1

然后我用mutate_at()這樣的: .vars不變,但.funs只是功能,附加參數funs在傳遞...

dataframe %>% 
  mutate_at(.vars = vars(var1, var9, var17),
            .funs = forcats::fct_recode,
            "Yes" = "1",
            "No" = "2")

最終結果:

  var1 var9 var17
1   No   No    No
2  Yes   No   Yes
3   No  Yes   Yes
4  Yes  Yes   Yes
5  Yes  Yes   Yes

暫無
暫無

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

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