我正在嘗試撰寫一個代碼,該代碼將從給定向量中取出 colnames,并且在每一列中重新編碼 1<-5,2<-4,3<-3,4<-2,5<-1 big5qflip 是我需要從問卷中重新編碼的列的向量,我無法讓它作業,并且正確撰寫 case_when
big5new%>%mutate_at(vars(big5qflip),case_when(
big5qflip==1~5,
big5qflip==2~4,
big5qflip==3~3,
big5qflip==4~2,
big5qflip==5~2
))
謝謝你!
當我嘗試上面的代碼時,我得到了以下錯誤錯誤mutate_at()
:!.funs
必須是單面公式、函式或函式名稱。運行rlang::last_error()
以查看錯誤發生的位置。
uj5u.com熱心網友回復:
mutate_at
已被 取代across
,所以這里有一個使用這個函式的解決方案。還要注意{{ ... }}
參考以下中的列名big5qflip
:
library(dplyr)
big5new <- data.frame(
X = c(1, 2, 1, 3, 2),
Y = c(4, 4, 4, 4, 4),
Z = c(1, 1, 1, 1, 1)
)
big5qflip <- c("X", "Y")
newcodes <- 5:1
names(newcodes) <- 1:5
big5new %>%
mutate(
across(
{{ big5qflip }},
~ do.call(recode, append(list(.x =.x), newcodes))
)
)
uj5u.com熱心網友回復:
這是另一種選擇。您可以使用factor
以相反的順序設定級別,然后as.numeric
獲取與數字相反的級別索引。
library(tidyverse)
big5new <- data.frame(
X = c(1, 2, 1, 3, 2),
Y = c(4, 4, 4, 4, 4),
Z = c(1, 1, 1, 1, 1)
)
big5qflip <- c("X", "Y")
big5new |>
mutate(across(all_of(big5qflip), \(x) as.numeric(factor(x, levels = 5:1))))
#> X Y Z
#> 1 5 2 1
#> 2 4 2 1
#> 3 5 2 1
#> 4 3 2 1
#> 5 4 2 1
uj5u.com熱心網友回復:
謝謝!我寫的代碼在幾周后就可以作業了,這里是最終代碼
``
big5new<-big5new%>%mutate_at(vars(big5qflip), ~case_when(
.==1~5,
.==2~4,
.==3~3,
.==4~2,
.==5~1
))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/532438.html
標籤:r案子变异
上一篇:重命名基礎R中的因子水平
下一篇:Androidxml底部大空間