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

在R中如何基于lat、lon、时间操作dataframe筛选符合年限的空间点位

解决方案

你可以通过tidyverse的分组聚合逻辑配合sf空间包实现需求,操作逻辑和你熟悉的netCDF筛选逻辑完全一致,全程保留矢量/表格格式,不会产生栅格化带来的精度误差。

首先加载所需依赖包:

library(tidyverse)
library(sf)

如果你的数据当前是普通dataframe格式,先转为sf空间矢量对象:

your_sf_data <- st_sf(your_dataframe)

方法1:按ADM2_PCODE分组(性能最优,推荐优先使用)

ADM2_PCODE是行政区域唯一编码,用该字段分组运算效率最高:

result_sf <- your_sf_data %>%
  # 按行政编码分组,每个组对应一个独立空间单元
  group_by(ADM2_PCODE) %>%
  # 统计每个空间单元的Valor非NA有效年数
  mutate(valid_years = sum(!is.na(Valor))) %>%
  # 保留有效年数≥5的空间单元的所有记录
  filter(valid_years >= 5) %>%
  # 清理中间计算字段
  ungroup() %>%
  select(-valid_years)

方法2:按geometry字段分组(不依赖ADM2_PCODE)

如果ADM2_PCODE字段存在缺失,需要严格按几何边界匹配空间单元,直接对geometry列分组即可:

result_sf <- your_sf_data %>%
  group_by(geometry) %>%
  mutate(valid_years = sum(!is.na(Valor))) %>%
  filter(valid_years >= 5) %>%
  ungroup() %>%
  select(-valid_years)

可选操作

如果你仅需要导出符合条件的唯一空间矢量边界(不含逐年属性),可以在筛选后追加如下代码:

unique_valid_geoms <- result_sf %>%
  distinct(ADM2_PCODE, geometry)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:06:01