我需要在我的数据中重新编码一些列,有29列具有相同的编码表达式
单元格用数字编码,类似于:
1 -正常2 -改变3 - NA
我想创建一个for循环来同时更改所有列。我需要将数字代码(1;2;3)转换为名称(Normal;Alteres;NA)
这就是我想做的....我没有得到任何错误信息,但这是不工作....
for (i in names(df[,123:151])){
mutate(i = case_when(
i == 1 ~ 'Normal',
i == 2 ~ 'Altered',
i == 3 ~ 'NA'))
}
一个简单的方法是使用来自tidyverse的dplyr。
library(tidyverse)
#make test dataframe
col1 <- c("1", "2", "3")
col2 <- c(3, 2, 2)
df <- data.frame(col1, col2)
df_recoded<-df %>%
mutate(across(.cols = everything(), ~case_when(
. == 1 ~ 'Normal',
. == 2 ~ 'Altered',
. == 3 ~ NA_character_)))
试试这个:
df %>% mutate(across(.cols = names(df)[121:151],
.fns = ~recode(.,`1` = "Normal", `2` = "Altered", `3` = "NA",.default=NA_character_)))