如何在R中将按月分组的嵌套列表调整为按对应年份分组
R嵌套列表结构转换实现
需求说明
现有嵌套列表的一级分组为月份名称,二级分组为月-年格式的字符串,对应每个时间段的观测数据。需要调整结构为一级分组为年份,二级分组保留原月-年格式,对应数据不变。
实现代码
基础R实现(无需加载第三方包)
# 打平嵌套列表,保留所有二级数据框和原二级索引名 flat_list <- unlist(sample, recursive = FALSE) # 提取每个数据框对应的年份作为一级分组键 year_keys <- substr(names(flat_list), 4, 7) # 按年份重新分组为嵌套列表 output <- split(flat_list, year_keys) # 修正二级索引名,去除多余的月份前缀 output <- lapply(output, function(x) { names(x) <- substr(names(x), 5, nchar(names(x))) return(x) })
purrr实现(tidyverse生态,代码更简洁)
library(purrr) output <- sample %>% list_flatten() %>% split(~ substr(.y, 4, 7)) %>% map(~ set_names(.x, substr(names(.x), 5, nchar(names(.x)))))
结果验证
运行代码后执行str(output)即可查看结构,和你给出的预期输出结构完全匹配。
内容的提问来源于stack exchange,提问作者Hüsamettin Tayşi
相关产品推荐
相关产品推荐

