R语言中如何合并列表内子数据框:将cat_a/cat_b合并为cat、item_a/item_b合并为item
合并列表中的同类型数据框
需要将列表ori_list内的同类型子数据框合并:把cat_a和cat_b合并为名为cat的数据框,把item_a和item_b合并为名为item的数据框,最终得到结构如示例new_list的结果。
原始数据与列表构造
# 构造原始数据框 cat_a <- data.frame(name=c('A','B','C'),amount=c(1,2,3)) cat_b <- data.frame(name=c('w','B','C'),amount=c(4,2,3)) item_a <- data.frame(name=c('z','o','C'),amount=c(3,4,1)) item_b <- data.frame(name=c('n','B','C'),amount=c(6,6,3)) # 构造目标处理的ori_list files <- ls(pattern = 'cat|item') %>% purrr::set_names() ori_list <- list(mget(files))
合并实现代码
利用dplyr和purrr工具包可以高效完成分组合并:
library(dplyr) library(purrr) library(stringr) # 提取ori_list中的数据框集合 data_frames <- ori_list[[1]] # 按名称前缀分组并合并同组数据框 new_list <- data_frames %>% split(str_extract(names(.), "^[a-z]+")) %>% map(bind_rows)
合并结果
运行上述代码后,new_list的结构与预期完全一致:
> new_list $cat name amount 1 A 1 2 B 2 3 C 3 4 w 4 5 B 2 6 C 3 $item name amount 1 z 3 2 o 4 3 C 1 4 n 6 5 B 6 6 C 3
内容的提问来源于stack exchange,提问作者anderwyang
相关产品推荐
相关产品推荐

