R语言 如何将一天中的时间转换成弧度,0/2 Pi =日出,Pi=日落?

anauzrmj  于 2023-02-27  发布在  其他
关注(0)|答案(1)|浏览(226)

我有一个大数据集(连续几个月),我需要执行循环统计来评估日周期的潜在影响。
为此,我将所有的循环数据转换为弧度。现在我需要对一天中的时间做同样的转换。我面临的问题如下:我不希望0/2 Pi对应0/24小时,Pi对应中午。我需要将我的数据标准化,因为日出/日落时间在一年中会发生变化。
相反,我需要将0/2 Pi设置为日出时间,Pi设置为日落时间。我到处寻找,但没有找到任何解决方案。一篇科学论文使用了这种方法,我联系了其中一位作者,但至今没有答复。以下是论文中的一句话:

  • “为了标准化日光,计算了弧度值。值0和2 Pi表示黎明,而Pi表示黄昏。"* Zein * 等人 *,2019

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

dldeef67

dldeef671#

你可以在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)

相关问题