2016-01-27 60 views
0

我有一個數據框有n行,每個數據框對應於空間和時間中的單個事件。數據框的列中包含Julian日期的空間座標和日期以及其他幾列額外數據。將朱利安天轉換爲弧度(或類似)

我想用我的數據做很多事情,但作爲一個例子,我想對某些列進行柵格化並輸出一些地圖。對於大多數我的專欄中,我可以像這樣的東西很容易做到這一點:

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

然而,朱利安天,因爲其週期性這個沒有意義。 365/366與1相鄰,但R不知道這一點,所以使用中位數函數不會爲我提供有意義的數字。我正在尋找一種方法將Julian日的專欄轉換爲一個反映這一點的新專欄,並使我能夠爲Julian日創建有意義的值的柵格。

我的儒略天日期欄從1-366開始,反映一個事件發生在特定年份的日期。我的數據涵蓋了多年,但我的Julian天數列在每年年初從1開始。

我已經嘗試了一些東西,包括轉換爲弧度,但沒有任何工作到目前爲止。任何幫助將非常感激!

+0

如果您將鼠標懸停在「julian-date」標籤上,您將看到與標籤相關的Julian日期的實際定義。在某些情況下可能更容易處理相關的日期編號,例如[Lillian日期](https://en.wikipedia.org/wiki/Lilian_date)。用於將常規日期轉換爲這些日期數字之一的算法廣泛可用。謹慎使用R語言中的粗俗日語#定義。 –

+0

是的,我注意到標籤中的實際定義,最初在倒數第二段中有一段說明我的「Julian日期」不符合該定義。但是,使用Julian天標記似乎是將我的問題標記給有我的問題經驗的人的最可能方式,並且可以提供如何解決問題的示例。 @GerardAshton – James

+0

我建議真正的Julian日期日期或較短的Lillian日期可能是解決您的問題的方法,例如,2015年12月31日是Lillian日期158227和2016年1月1日是Lillian約會日期158228,所以莉蓮日期在數字上相鄰,如你所願。 –

回答

0

爲了得到我想要的東西,我首先必須將我的「Julian天」列縮放到度,然後我可以使用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。