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

如何用最少命令按出生年份将大型数据集拆分为小数据集?

问题

现有如下格式的数据集(R数据框):

ID year birth_year outcome
1  10021 2015       1960       1
2  10021 2016       1960       1
3  10021 2017       1960       1
4  10021 2018       1960       0
5  10021 2019       1960       0
6  10022 2015       1968       1
7  10022 2016       1968       0
8  10022 2017       1968       0
9  10022 2018       1968       0
10 10022 2019       1968       0
11 10023 2015       1968       1
12 10023 2016       1968       1
13 10023 2017       1968       1
14 10023 2018       1968       1
15 10023 2019       1968       1
16 10024 2015       1961       0
17 10024 2016       1961       0
18 10024 2017       1961       0
19 10024 2018       1961       1
20 10024 2019       1961       1

需要按birth_year列拆分数据集,分别生成名为year1960、year1961、year1968的数据框,最终效果如下:

> year1960
      ID year birth_year outcome
1  10021 2015       1960       1
2  10021 2016       1960       1
3  10021 2017       1960       1
4  10021 2018       1960       0
5  10021 2019       1960       0

> year1961
1 10024 2015       1961       0
2 10024 2016       1961       0
3 10024 2017       1961       0
4 10024 2018       1961       1
5 10024 2019       1961       1

> year1968
1  10022 2015       1968       1
2  10022 2016       1968       0
3  10022 2017       1968       0
4  10022 2018       1968       0
5  10022 2019       1968       0
6  10023 2015       1968       1
7  10023 2016       1968       1
8  10023 2017       1968       1
9  10023 2018       1968       1
10 10023 2019       1968       1

如何用最少步骤实现?

解决方案

方法1:基础R原生函数(无需额外包)

一行代码完成拆分并生成指定名称的数据框:

list2env(split(df, paste0("year", df$birth_year)), .GlobalEnv)
  • 说明:split()按拼接后的year+出生年份规则拆分数据集为列表;list2env()将列表中的每个元素转为全局环境中的独立数据框。

方法2:tidyverse工具链(需加载dplyr和purrr)

如果习惯tidyverse语法,同样一行核心代码完成:

library(dplyr)
library(purrr)

df %>% group_split(birth_year) %>% set_names(paste0("year", unique(df$birth_year))) %>% list2env(.GlobalEnv)
  • 说明:group_split()按出生年份拆分数据框为列表;set_names()给列表元素赋予指定名称;最后通过list2env()存入全局环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:10:49