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

咨询:R语言中用于分类大潮与小潮的函数或替代工具

潮汐数据分类(大潮/小潮)的工具与实现方案

不管你用Python还是R,都有不少成熟工具可以实现潮汐读数的大潮/小潮分类,核心逻辑是抓住潮差大小或月相周期这两个判断依据,以下是具体选项:

Python 工具

  • pytides:专门的潮汐分析库,支持潮汐模型拟合与预测,能快速计算高低潮及潮差,进而分类:

    from pytides.tide import Tide
    import pandas as pd
    
    # 假设你的数据包含datetime和water_level列
    tide_df = pd.read_csv("tide_data.csv", parse_dates=["datetime"])
    # 拟合潮汐模型
    tide_model = Tide.decompose(tide_df["water_level"], tide_df["datetime"])
    # 预测每个时间点的高低潮
    predicted_tides = tide_model.at(tide_df["datetime"])
    tide_df["high_tide"] = [t.high for t in predicted_tides]
    tide_df["low_tide"] = [t.low for t in predicted_tides]
    # 计算潮差并设定阈值分类
    tide_df["tide_range"] = tide_df["high_tide"] - tide_df["low_tide"]
    # 用75分位数作为大潮/小潮的分界(可根据你的数据集调整)
    threshold = tide_df["tide_range"].quantile(0.75)
    tide_df["tide_type"] = ["spring" if r >= threshold else "neap" for r in tide_df["tide_range"]]
    
  • oce:海洋科学领域常用库,支持潮调和分析,可通过计算主要分潮(M2、S2)的振幅之和判断大潮(振幅和大)与小潮(振幅和小),适合更专业的潮汐研究场景。

  • ephem:结合月相辅助判断,大潮对应新月/满月前后,小潮对应上下弦月前后:

    import ephem
    
    def get_moon_phase(dt):
        moon = ephem.Moon(dt)
        return moon.phase  # 0=新月,50=上弦/下弦,100=满月
    
    tide_df["moon_phase"] = tide_df["datetime"].apply(get_moon_phase)
    # 划定大潮/小潮的月相范围(可调整天数阈值)
    tide_df["tide_type"] = tide_df["moon_phase"].apply(
        lambda p: "spring" if p <= 10 or p >= 90 
                  else "neap" if 40 <= p <= 60 
                  else "transitional"
    )
    

R 工具

  • tide + tidyverse:tide包支持潮汐数据预测,结合dplyr快速完成分类:

    library(tide)
    library(dplyr)
    library(lubridate)
    
    # 读取并预处理潮汐数据
    tide_df <- read_csv("tide_data.csv") %>% 
      mutate(datetime = ymd_hms(datetime))
    # 预测高低潮(需指定潮汐站ID,或用已有高低潮数据)
    tide_pred <- predict_tide(tide_df$datetime, station = "your_station_code")
    tide_df <- left_join(tide_df, tide_pred, by = "datetime")
    # 计算潮差并分类
    tide_df <- tide_df %>% 
      mutate(tide_range = high - low,
             tide_type = case_when(
               tide_range >= quantile(tide_range, 0.75) ~ "spring",
               TRUE ~ "neap"
             ))
    
  • lunar:获取月相数据辅助分类,逻辑和Python的ephem类似,适合需要结合天文周期的研究。

水鸟觅食行为匹配

分类完成后,只需将潮汐数据的tide_type列与你的水鸟行为数据按时间维度(日期、小时等)合并即可,用pandas.merge()(Python)或dplyr::left_join()(R)就能快速完成关联分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:45:47