0

我有一个包含 n 行的数据框,每行对应于空间和时间上的单个事件。数据框具有包含空间坐标和儒略日日期的列以及其他几列附加数据。

我想对我的数据做很多事情,但作为一个例子,我想栅格化一些列并输出一些地图。对于我的大部分专栏,我可以通过以下方式轻松做到这一点:

df.raster <- rasterize(df.sp, base.raster, field = "column", fun=median) 
plot(df.raster)

然而,在朱利安时代,这没有任何意义,因为它是周期性的。365/366 与 1 相邻,但 R 不知道这一点,因此使用中值函数不会为我提供有意义的数字。我正在寻找一种方法将我的儒略日列转换为反映这一点的新列,并使我能够为儒略日创建一个有意义的值的栅格。

我的儒略日专栏从 1 到 366 运行,反映了特定年份内发生事件的日期。我的数据涵盖多年,但我的 Julian days 列在每年年初再次从 1 开始。

我尝试了一些方法,包括转换为弧度,但到目前为止没有任何效果。任何帮助将非常感激!

4

1 回答 1

2

为了得到我想要的,我首先必须将我的“Julian days”列缩放为度数,然后我可以使用 aspace 包中的 as_radians 函数将度数转换为弧度,然后我可以使用弧度的循环统计:

# Scale Julian days to degrees

df$degrees <- (df$jday/366)*360

# Convert degrees to radians

df$radians <- as_radians(df$degrees)

# Convert df to a spatial object

df.sp <- df
coordinates(df.sp) <- ~ x + y
proj4string(df.sp) <- proj4string(coordinates)

# Rasterise radians

radians.raster <- rasterize(df.sp, base.raster, field = "radians", fun = mean.circular)

# Plot rasterised radians

plot(radians.raster)

目前这些数字会稍微不准确,因为(当转换为度数时)闰年应除以 366,非闰年应除以 365,但我会用一个查找年份的简单循环来解决这个问题(也包括在我的 df 中)对于每一行并适当地使用 366/365。

于 2016-02-14T14:25:13.273 回答