[英]Recode same factor levels values among multiple variables "with mutate_at" in Tidyverse
我有幾個值“1”和“2”的因子變量需要重新編碼為“是”和“否”。 Tidyverse mutate_at和fct_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_at 、 vars或fct_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.