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

如何基于另一列扩展数据列?实现子项后紧跟母项

解决方案

你可以通过分组处理每个家庭,在每组孩子的行之后添加母亲的记录,用tidyverse工具就能实现:

library(tidyverse)

# 原始数据
mydata <- tribble(
  ~id, ~child, ~mother,
  1, "John", "Jane",
  1, "George", "Jane",
  2, "Matthew", "Angela",
  3, "Gwel", "Macrine",
  3, "Tim", "Macrine",
  3, "Jim", "Macrine"
)

# 生成目标数据
newdata <- mydata %>%
  group_by(id) %>%
  group_modify(function(.data, .group) {
    # 生成当前组的母亲行
    mother_row <- tibble(
      id = .group$id,
      child = first(.data$mother),
      mother = NA
    )
    # 合并原孩子行与母亲行
    bind_rows(.data, mother_row)
  }) %>%
  ungroup()

# 查看结果
print(newdata)

代码说明:

  • group_by(id):按家庭ID分组,保证同一家庭的成员被统一处理
  • group_modify():对每个分组单独操作,.data指代当前组的原始数据,.group包含当前组的ID信息
  • 同一家庭的母亲名字一致,用first(.data$mother)直接提取该组的母亲名字即可
  • bind_rows()将原组的孩子记录和新增的母亲记录合并
  • ungroup()取消分组,得到完整的目标数据集

运行后得到的结果和你给出的newdata完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:38:25