如何按年份拆分DataFrame并将子数据集命名为MR_2022等格式?
R语言按年份拆分DataFrame并命名为MR_YYYY格式
直接按下面的步骤操作就能把数据按年份拆分,并且自动命名成MR_2022、MR_2021这类格式:
方法一:基础R实现(无需额外包)
# 示例数据 df = structure(list(id = c(1, 1, 1, 1, 2, 2, 2, 2, 35555, 35555, 35555 ), year = c(2022, 2022, 2021, 2021, 2020, 2020, 2019, 2019, 2018, 2022, 2022)), class = "data.frame", row.names = c(NA, -11L)) # 1. 按年份拆分数据,得到按年份命名的列表 split_list <- split(df, df$year) # 2. 把列表元素的名称改成MR_YYYY格式 names(split_list) <- paste0("MR_", names(split_list)) # 3. 将每个子DataFrame导出到全局环境,直接就能调用 list2env(split_list, envir = .GlobalEnv)
执行完之后,在控制台输入MR_2022就能看到2022年的所有数据,其他年份同理。
方法二:dplyr实现(适合tidyverse用户)
如果你平时常用dplyr,也可以这么写:
library(dplyr) # 示例数据(和上面一致) df = structure(list(id = c(1, 1, 1, 1, 2, 2, 2, 2, 35555, 35555, 35555 ), year = c(2022, 2022, 2021, 2021, 2020, 2020, 2019, 2019, 2018, 2022, 2022)), class = "data.frame", row.names = c(NA, -11L)) # 1. 按年份分组拆分 split_list <- df %>% group_by(year) %>% group_split(.keep = TRUE) # 2. 提取所有唯一年份,给列表元素命名 year_values <- unique(df$year) names(split_list) <- paste0("MR_", year_values) # 3. 导出到全局环境 list2env(split_list, envir = .GlobalEnv)
关键步骤说明
split()/group_split():核心是把原数据按year列的不同值拆分成多个子DataFrame,存到列表里。paste0("MR_", ...):给每个子DataFrame的名称加上前缀,符合MR_YYYY的命名格式。list2env():把列表里的每个子DataFrame变成全局环境里的独立对象,不用再从列表里提取,直接调用名称即可。
内容的提问来源于stack exchange,提问作者Ed_Gravy
相关产品推荐
相关产品推荐

