【问题标题】:How to convert time of day into radians with 0/2Pi = sunrise and Pi=sunset?如何将一天中的时间转换为 0/2Pi = 日出和 Pi = 日落的弧度?
【发布时间】:2019-09-08 17:29:35
【问题描述】:

我有一个大数据集(连续数月),我需要执行循环统计来评估 diel 周期的潜在影响。

为此,我将所有循环数据转换为弧度。我现在需要对一天中的时间做同样的事情。我面临的问题如下: 我不希望 0/2Pi 对应于 0h/24h 而 Pi 对应于中午。考虑到日出/日落时间在一年中变化,我需要将我的数据标准化。

相反,我需要将 0/2Pi 设置为日出时间,将 Pi 设置为日落时间。我一直在到处寻找,找不到任何解决方案。一篇科学论文使用了这种方法,我联系了其中一位作者,但到目前为止没有答案。这是论文中的一句话:

“为了标准化日光,计算了弧度值。值 0 和 2Pi 代表黎明,而 Pi 代表黄昏。” Zein et al., 2019

我应该提到我是一名海洋生物学家,研究鲸类动物。我没有任何数学背景。我在 R 中编码。我使用 Maptools 包中的 sunriset() 访问了我的数据集每天的日落/日出时间。

非常感谢您。

【问题讨论】:

    标签: r datetime data-conversion radians


    【解决方案1】:

    您可以在suncalc 包中使用getSunlightTimes。这是计算时间的尝试,设置 0 表示日出,设置 π 表示日落。

    library(suncalc)
    library(hms)
    
    #  tm = a time variable
    tm <- as.hms(
      c(
        as.POSIXlt("2019-04-18 10:02:29"),
        as.POSIXlt("2019-04-18 15:10:00"),
        as.POSIXlt("2019-04-18 18:54:12")
      )
    )
    
    sun_t <- getSunlightTimes(as.Date("2019-04-18"), lat= 59.33, lon= 18.07, tz= "CET")
    
    sunrise <- as.hms(sun_t$sunrise)
    sunset <- as.hms(sun_t$sunset)
    
    tm_pi <- as.numeric(tm - sunrise) * pi / as.numeric(sunset - sunrise)
    

    【讨论】:

    • 嗨!感谢您的回答。我从另一个包裹中得到了我的日出/日落,但无论如何这很好:) 你的方式是有道理的,当然,但问题是从日出到日落的时间与从日落到下一次日出的时间不同!在您那里的计算中,它是否考虑到了这一点?我不这么认为,因为取任意值是行不通的。
    • as.numeric(sunset - sunrise) 是斯德哥尔摩从日出到日落的时间,这里是 2019-04-18,在斯德哥尔摩(59.33º N 18.07º E)。
    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多