You need to enable JavaScript to run this app. R中如何在两日期区间为声学接收站数据补全按月唯一条目
优惠活动
大模型
产品
解决方案
定价
更多

R中如何在两日期区间为声学接收站数据补全按月唯一条目

实现逻辑

核心是把原有逐站点的单行部署记录,按实际在水的时间区间拆成逐月度的独立条目,再衔接你现有的sf绘图流程,具体步骤如下:

1. 基础数据预处理

先把原始csv里的部署、回收日期字符串转成R可计算的日期格式,这步是后续时间序列生成的基础,不做的话时间计算会直接报错:

# 加载所需依赖包
library(lubridate)
library(tidyr)
library(dplyr)
library(sf)

# 读入原始数据
deploy_raw <- read.csv("Deployment_Database_CLEAN_MONTH2.csv", header=TRUE, stringsAsFactors = F)

# 按实际日期格式调整format参数,比如你的日期是2013/1/5就改成"%Y/%m/%d"
deploy_raw$deploy_date <- as.Date(deploy_raw$deploy_date, format = "%Y-%m-%d")
deploy_raw$recover_date <- as.Date(deploy_raw$recover_date, format = "%Y-%m-%d")

2. 生成逐月度的部署记录

对每个站点拆分出整个部署周期里覆盖的所有自然月,每个月生成一条独立条目,保留原站点的坐标信息:

deploy_monthly <- deploy_raw %>%
  # 替换成数据集中站点唯一标识的列名
  group_by(stn_id) %>%
  reframe(
    # 生成从部署当月到回收当月的连续月度序列
    month_seq = seq(
      from = floor_date(deploy_date, unit = "month"),
      to = floor_date(recover_date, unit = "month"),
      by = "month"
    ),
    # 同步保留站点固定属性(经纬度)
    stn_long = first(stn_long),
    stn_lat = first(stn_lat)
  ) %>%
  # 生成统一的年-月分面字段
  mutate(
    Month = format(month_seq, "%Y-%m")
  ) %>%
  # 转成空间sf对象,适配绘图逻辑
  st_as_sf(coords = c("stn_long","stn_lat"), crs = 4326)

以上逻辑会覆盖从部署当月到回收当月的所有完整月份,例如2013年1月部署、2014年6月回收的站点,会自动生成2013-01到2014-06共18条独立条目,对应每月在水的状态。

3. 替换绘图数据源

不需要修改你原有地图的图层配置,只需要把绘图时的部署点数据源换成上面生成的逐月数据集即可:

detect_can <- detect[detect$EEZ=='Canada',]

p <-  ggplot(land.all) + 
  geom_sf() +
  # 替换为逐月拆分后的站点空间对象
  geom_sf(data=deploy_monthly, col='blue', alpha = 0.5)+ 
  geom_sf(data=detect_can, col='red')+ 
  xlab('Longitude')+
  ylab('Latitude')+
  coord_sf(xlim = c(-75, -45), ylim = c(40, 55), expand = FALSE) +
  facet_wrap(~Month) +
  theme_bw()

ggsave(plot = p, filename = "figure MONTH4.jpg", width = 16, height = 12)

常见问题调整

  • 如果运行后出现空月份、NA值,先单独检查deploy_raw中的两个日期字段的解析结果,修正原始csv里格式不统一的日期条目,避免解析失败。
  • 如果分面出现月份排序混乱(比如字母排序导致2013-10排在2013-02前面),先把Month字段转成按时间顺序排列的因子类型再绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 23:36:03