微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我想在 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"))))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。