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

基于Zoo::yearmon类筛选R数据框中城市完整年度数据

提取城市完整年度数据(12个月全量)的解决方案

嘿,这个需求我之前也遇到过!用zoo的yearmon类来处理确实很顺手,咱们一步步来实现:

1. 先把年月转成yearmon类型

假设你的数据框叫df,包含city、year、month三列。首先把年份和月份组合成yearmon对象,这能帮我们更方便地处理年月维度:

library(zoo)
library(dplyr)  # 用dplyr做分组筛选更直观,用base R也能实现

# 创建yearmon列:拼接年和月为"YYYY-MM"格式,再转成yearmon类型
df$year_month <- as.yearmon(paste(df$year, df$month, sep = "-"))

2. 筛选出有12个月的完整年度

接下来按城市+年份分组,判断每个分组里的月份数量是否为12,只保留符合条件的分组数据:

# 第一步:找出所有城市的完整年度
complete_city_years <- df %>%
  group_by(city, year) %>%
  summarise(total_months = n_distinct(month)) %>%  # 统计每个分组的唯一月份数
  filter(total_months == 12)  # 只保留有12个月的年度

# 第二步:从原始数据中提取这些完整年度的记录
df_full_years <- df %>%
  inner_join(complete_city_years, by = c("city", "year")) %>%
  select(-total_months)  # 移除临时统计列

小技巧:直接从yearmon提取年份

如果你不想依赖原数据里的year列,也可以直接从yearmon对象中提取年份,这样更灵活:

# 从yearmon列转成年份整数
df$year <- as.integer(df$year_month)

# 之后重复上面的分组筛选逻辑就可以了

这样处理完,df_full_years里就只保留了每个城市中拥有全年12个月完整数据的年度记录啦!

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:04:25