如何在R中整理Dataframe:按年份合并去空值并排序
解决方法
核心思路
先清理重复的年份-指标条目,保留有效非空值,再转宽格式并按年份排序。
完整代码
library(wbstats) library(dplyr) library(tidyr) # 拉取巴基斯坦数据 pakistan_data <- wb(country = "PK", indicator = c("SM.POP.NETM", "MS.MIL.XPND.CD", "FP.CPI.TOTL", "SE.XPD.TOTL.GD.ZS", "GB.XPD.RSDV.GD.ZS", "GC.XPN.TOTL.GD.ZS"), startdate = 2010, enddate = 2020) # 数据清洗与整理 pakistan_data_clean <- pakistan_data %>% # 按年份和指标分组,提取每组第一个非空值(去重+去空) group_by(date, indicator) %>% summarize(value = first(na.omit(value)), .groups = "drop") %>% # 转宽格式,年份为行,指标为列 pivot_wider(names_from = indicator, values_from = value) %>% # 按年份升序排列 arrange(date) %>% # 移除所有指标都为空的无效行(可选) filter(if_any(everything(), ~!is.na(.x)))
关键步骤说明
- 分组聚合: 通过
group_by(date, indicator)确保每个年份的每个指标只有一条记录,用first(na.omit(value))保留有效数值,剔除重复空值条目 - 转宽格式:
pivot_wider实现从长表到宽表的转换,满足一行对应一个年份所有指标的需求 - 排序与清理:
arrange(date)按年份排序,可选的filter步骤移除完全无数据的年份行
内容的提问来源于stack exchange,提问作者Tehreem Rashid
相关产品推荐
相关产品推荐

