在dplyr中如何实现变量反选,处理指定列时保留其余变量
现有代码中select(91:166)的作用是仅保留第91至166列,因此运行后会丢失其余所有变量。不需要单独做反选操作,直接使用mutate()配合across()修改指定列即可自动保留所有未涉及的原有变量。
正确实现代码如下:
library(dplyr) library(sjmisc) # 直接替换原有第91至166列为二分处理后的结果 dt_test <- dt %>% mutate(across(91:166, ~ dicho(.x, dich.by = 2)))
如果需要保留原始的第91至166列,给处理后的新列统一加后缀,可以调整参数:
# 新增二分处理后的列,列名后缀为_dich dt_test <- dt %>% mutate(across(91:166, ~ dicho(.x, dich.by = 2), .names = "{.col}_dich"))
如果使用的是1.0版本以下的dplyr,也可以用mutate_at实现相同效果:
dt_test <- dt %>% mutate_at(vars(91:166), ~ dicho(.x, dich.by = 2))
内容的提问来源于stack exchange,提问作者David Potrel
相关产品推荐
相关产品推荐

