如何用循环提取tibble所有列整数的前3位并替换原列?
提取tibble所有目标列的前3位并替换原列
方法1:基础R循环实现
如果你的列名是从illness_1到illness_13,可以先生成目标列名向量,再通过循环逐一处理:
# 生成需要处理的列名列表 target_cols <- paste0("illness_", 1:13) # 循环遍历每一列,替换为前3位内容 for (col in target_cols) { patient_illness[[col]] <- substr(patient_illness[[col]], 1, 3) }
这里用[[而非$是因为循环中使用变量名索引列时,[[的兼容性更好。
方法2:dplyr批量处理(更适合tibble)
针对tibble的特性,用dplyr的across函数可以更简洁地完成批量列操作,无需手动写循环:
library(dplyr) # 批量处理所有以"illness_"开头的列,替换为前3位 patient_illness <- patient_illness %>% mutate(across(starts_with("illness_"), ~ substr(.x, 1, 3)))
starts_with("illness_")会自动匹配所有符合命名规则的列,across将提取前3位的逻辑应用到每一列,直接覆盖原列值。
内容的提问来源于stack exchange,提问作者hoon99
相关产品推荐
相关产品推荐

