首页 > 解决方案 > 如何在 R 中使用相同的条件更改多个列?

问题描述

我需要重新编码数据中的一些列,有 29 列具有相同的编码表达式

单元格用数字编码,如下所示:

1 - 正常 2 - 改变 3 - 不适用

我想创建一个 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'))
  
}

标签: rdplyr

解决方案


一个简单的方法是使用 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_)))

推荐阅读