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

R语言实现含emphysema/chronic bronchitis的指定行重复拆分方案

R数据处理:拆分指定行并填充对应字段值

前置说明

假设你的原始数据框命名为df,第一列列名为col1,第二列列名为col2,如果实际列名不同,替换代码中对应的列名即可。如果需要输出中文的字段值,只需将代码中对应的英文字符串替换为:第一列肺气肿、慢性支气管炎,第二列肺气肿、慢性支气管炎即可。

tidyverse 实现方案(代码更简洁)

# 加载依赖包
library(dplyr)
library(tidyr)

df_result <- df %>%
  # 标记需要拆分的目标行
  mutate(to_split = ifelse(col1 == "emphysema/chronic bronchitis", 1, 0)) %>%
  # 目标行拆分为2行,生成序号区分拆分后的两条记录
  uncount(weights = ifelse(to_split == 1, 2, 1), .id = "split_id") %>%
  # 按拆分序号填充指定的字段值
  mutate(
    col1 = case_when(
      to_split == 0 ~ col1,
      split_id == 1 ~ "emphysema",
      split_id == 2 ~ "chronic bronchitis"
    ),
    col2 = case_when(
      to_split == 0 ~ col2,
      split_id == 1 ~ "Emphysema",
      split_id == 2 ~ "Chronic Bronchitis"
    )
  ) %>%
  # 删除临时生成的辅助列
  select(-to_split, -split_id)

基础R实现方案(无需安装第三方包)

# 定位所有需要拆分的行索引
split_idx <- which(df$col1 == "emphysema/chronic bronchitis")
res_list <- list()

for (i in seq(nrow(df))) {
  if (i %in% split_idx) {
    # 生成拆分后的第一行
    row1 <- df[i, ]
    row1$col1 <- "emphysema"
    row1$col2 <- "Emphysema"
    # 生成拆分后的第二行
    row2 <- df[i, ]
    row2$col1 <- "chronic bronchitis"
    row2$col2 <- "Chronic Bronchitis"
    res_list[[length(res_list) + 1]] <- row1
    res_list[[length(res_list) + 1]] <- row2
  } else {
    # 非目标行直接保留
    res_list[[length(res_list) + 1]] <- df[i, ]
  }
}

# 合并列表为最终数据框
df_result <- do.call(rbind, res_list)

效果验证

运行后即可得到预期输出:原有的emphysema/chronic bronchitis行会被拆分为两行,对应列填充指定值,其余行完全保留不变。

内容的提问来源于stack exchange,提问作者Nivi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:07