R语言如何批量合并多组对应年份的data.frame数据框
问题原因
你当前代码的核心问题有两个:
merge()接收的是你拼接出来的字符串变量名,而非实际加载在环境中的数据框对象,需要用get()函数根据变量名字符串提取对应对象- 你原有消费数据框的命名是
Con_年份,但循环里拼接的是Cons_年份,存在拼写错误
修正后的for循环代码
# 先定义年份向量 years <- c(2014, 2015, 2016) for (i in years){ assign(paste0("Con_Income_", i), merge(get(paste0("Income_", i)), get(paste0("Con_", i))) ) }
提示:如果需要指定合并的主键列,可在merge函数中补充by/by.x/by.y参数,避免默认按所有同名字段合并出现不符合预期的结果
更推荐的实现方式(列表存储,更易管理)
批量生成多个全局变量后续维护成本很高,建议将合并后的数据统一存在命名列表中,调用更方便:
years <- c(2014, 2015, 2016) # 初始化空列表 Con_Income_list <- list() for (i in years){ Con_Income_list[[as.character(i)]] <- merge(get(paste0("Income_", i)), get(paste0("Con_", i))) } # 调用示例:提取2014年合并后的数据 Con_Income_list[["2014"]]
内容的提问来源于stack exchange,提问作者Vishnu Kant
相关产品推荐
相关产品推荐

