我想在 R 中同时重估多个变量

问题描述

对于我的论文研究,我试图同时重估多个变量/列。我曾尝试使用以下函数,但这需要我分开指定每一列:

full_df$CR39

我有大约 65 个要重新编码的变量(名为 CR00、CR01、CR02...)。值“1”必须变为“0”,值“2”必须变为“1”。我还有一些名为 CR00FAM、CR01FAM、CR02FAM、...) 的变量,我不希望同时对其进行重估。

我尝试过使用“select”函数,但这似乎没有帮助:full_df%>% select(starts_with("DF"),-contains("FAM")).

有人知道可能的解决方案吗?我搜索了很多 stackoverflow 主题,但没有一个建议的解决方案适合我。

解决方法

我们可以遍历变量并执行此操作。根据正则表达式选择感兴趣的列,即这些列名称以 (^) 'CR' 开头,后跟一个或多个数字 (\\d+) 的末尾 ($)字符串。使用 lapply 循环选择列并应用 revalue,将输出分配回所选列数据集

nm1 <- grep("^CR\\d+$",names(full_df),value = TRUE)
full_df[nm1] <- lapply(full_df[nm1],function(x) revalue(x,c("1"="0","2" ="1"))

或者使用 dplyr

library(dplyr)
full_df <- full_df %>%
    mutate(across(matches("^CR\\d+$"),~ 
         revalue(.,c("1" = "0","2" = "1"))))