You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:15:14