如何根据数据框名称首字符分组合并全局环境中的数百个数据框?
按前缀分组合并全局环境中的数据框
1. 筛选数据框并提取分组前缀
先把全局环境里所有数据框的名称筛选出来,再根据名称前缀(前两位或首字符)划分分组:
# 筛选全局环境中所有数据框的名称 df_names <- Filter(function(x) is.data.frame(get(x)), ls()) # 提取分组前缀,根据需求二选一: # ① 前两位字符作为分组(比如AB_James取AB) groups <- substr(df_names, 1, 2) # ② 首字符作为分组(比如K_xxx取K) # groups <- substr(df_names, 1, 1)
2. 批量合并同组数据框
把同组的数据框归到一起,用rbind合并(你提到观测数和变量数一致,行合并刚好匹配需求),最后把合并后的结果放回全局环境:
# 按分组拆分数据框名称列表 grouped_dfs <- split(df_names, groups) # 遍历每个分组完成合并 for (group in names(grouped_dfs)) { # 取出当前分组的所有数据框 current_dfs <- lapply(grouped_dfs[[group]], get) # 合并数据框 merged_df <- do.call(rbind, current_dfs) # 给合并后的数据集命名(比如AB组叫AB_merged),并放到全局环境 assign(paste0(group, "_merged"), merged_df, envir = .GlobalEnv) }
额外检查(可选)
合并前最好确认同组数据框的列名完全一致,避免合并出错:
# 拿第一个分组做示例检查 first_group <- grouped_dfs[[1]] col_check <- lapply(first_group, function(x) colnames(get(x))) # 返回TRUE说明列名全一致 all(sapply(col_check, function(x) identical(x, col_check[[1]])))
内容的提问来源于stack exchange,提问作者Ajrhjnd
相关产品推荐
相关产品推荐

