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

在R语言中基于唯一ID创建包含0-5值的Age列

为每个ID扩展生成0-5的Age列解决方案

我来帮你搞定这个需求!你想要把每个ID都和0到5的Age值一一配对,生成展开后的长格式数据框,下面给你两种常用工具的实现方法:

R语言实现

你可以用tidyr包的便捷函数来快速实现,也可以用基础R的方法:

方法1:使用tidyr的group_by + expand

library(tidyr)

# 构造原始数据框
df <- data.frame(ID = c(1124, 1123))

# 为每个ID生成0-5的Age值
result <- df %>%
  group_by(ID) %>%
  expand(Age = 0:5)

# 查看结果
print(result)

方法2:使用expand_grid直接生成笛卡尔积

如果不需要分组操作,直接生成ID和Age的所有组合更简单:

result <- expand_grid(ID = df$ID, Age = 0:5)

Python语言实现

用pandas库可以轻松实现这个需求,这里提供两种思路:

方法1:交叉合并(笛卡尔积)

import pandas as pd

# 构造原始数据框
df = pd.DataFrame({'ID': [1124, 1123]})

# 创建包含0-5的Age数据框
age_df = pd.DataFrame({'Age': range(6)})

# 通过临时键实现交叉合并
result = df.assign(key=1).merge(age_df.assign(key=1), on='key').drop('key', axis=1)

# 查看结果
print(result)

方法2:使用explode展开列表

import pandas as pd

# 构造原始数据框
df = pd.DataFrame({'ID': [1124, 1123]})

# 为每个ID分配包含0-5的列表,再展开
df['Age'] = [list(range(6))] * len(df)
result = df.explode('Age')

# 查看结果
print(result)

以上方法都能生成你预期的输出,每个ID都会对应0到5的所有Age值~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:34:59