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

在R中根据DataFrame单元格值重复ID的实现方法求助

解决方案:生成重复ID与连续年龄序列

核心思路

直接通过构造年龄序列列表,再利用Pandas的explode方法展开列表,自动实现ID的重复与年龄序列的生成,无需额外合并DataFrame。

步骤实现

  1. 导入依赖与构造示例数据
import pandas as pd

# 替换为你的原始数据
df = pd.DataFrame({
    'id': ['A001', 'B002', 'C003'],
    't_p': [45, 52, 48],
    't_c': [55, 60, 53]
})
  1. 生成年龄序列列
    对每行数据生成从50到t_c的连续整数列表,同时过滤掉t_c < 50的无效行(若需保留可调整逻辑):
# 过滤t_c小于50的行(可选)
df = df[df['t_c'] >= 50].copy()

# 构造年龄序列:range左闭右开,所以t_c要+1
df['age'] = df.apply(lambda row: list(range(50, row['t_c'] + 1)), axis=1)
  1. 展开列表生成最终结果
    用explode将列表拆分为单独行,自动重复对应ID与其他列数据:
result_df = df.explode('age').reset_index(drop=True)

# 整理列顺序(按需调整)
result_df = result_df[['id', 'age', 't_p']]

示例输出

处理后的结果如下(截取部分):

idaget_p
A0015045
A0015145
A0015245
A0015345
A0015445
A0015545
B0025052
B0025152
B0026052

边界处理说明

  • 若存在t_c < 50的行:上述代码直接过滤,若需保留可将list(range(...))替换为[None]或其他占位值,explode后会保留该行但年龄为占位值。
  • 若t_c == 50:生成的列表仅包含50,explode后该行仅出现一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:07:08