我如何在R中使用相同的条件更改多个列?

  • 本文关键字:条件 r dplyr
  • 更新时间 :
  • 英文 :


我需要在我的数据中重新编码一些列,有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_)))

最新更新