You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用循环提取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:47:07