R语言如何将多个含缺失值的不同数据框合并为全年份统一数据框
R语言实现方案
前置准备
首先构造覆盖完整时间范围的基准年份表,保证最终结果不会缺失1960-2019年的任意年份:
full_years <- data.frame(Year = 1960:2019)
把所有待合并的指标数据集存入列表,方便批量处理(示例里两个数据集分别命名为lnd_km_df、lnd_prcnt_df,有更多数据集直接追加到列表即可):
df_list <- list(lnd_km_df, lnd_prcnt_df)
tidyverse 简便实现
加载依赖包后用链式操作完成合并、补全、排序:
library(tidyverse) BIG.DF <- df_list %>% # 批量合并所有指标数据集,按年份匹配 reduce(full_join, by = "Year") %>% # 关联基准年份表补全所有缺失年份 right_join(full_years, by = "Year") %>% # 按年份降序排序,和示例展示顺序一致 arrange(desc(Year))
base R 实现
无需额外安装依赖包的实现方式:
# 合并基准表与第一个指标数据集 BIG.DF <- merge(full_years, lnd_km_df, by = "Year", all.x = TRUE) # 依次合并剩余所有指标数据集 BIG.DF <- merge(BIG.DF, lnd_prcnt_df, by = "Year", all.x = TRUE) # 按年份降序排序 BIG.DF <- BIG.DF[order(-BIG.DF$Year), ]
结果导出说明
最终结果里无数据的位置默认是NA,如果需要导出为空白显示的文件,导出时设置空值参数即可,比如导出CSV:
write.csv(BIG.DF, "BIG_DF.csv", na = "", row.names = FALSE)
内容的提问来源于stack exchange,提问作者user15770147
相关产品推荐
相关产品推荐

