2016-01-16 75 views
0

我正在尋找一種方法來查找前一個日曆星期一的日期對象。例如,今天是2016年1月15日;我需要建立一個函數,將返回'2016-01-04 UTC'找到前一個星期一

+2

聽起來像一個很酷的功能。你有什麼? – rawr

+3

http://stackoverflow.com/questions/28971638/r-obtaining-last-fridays-date – hrbrmstr

+2

'PrevMon < - function(x){ Chris

回答

3

該問題要求「前一個日曆周的星期一」。我們在下面假設這意味着您希望在輸入日期或之前的週一。

請注意,使用"Date"類會更好,因爲不需要時間,而"Date"類沒有時區,因此它避免了與"POSIXt"類相關的潛在時區錯誤。

動物園小插曲中有nextfri函數,我們可以使用它作爲類似函數的基礎。 (1)ceiling替換爲floor,(2)5(星期五)替換爲1(星期一)和(3)我們添加origin=變元to as.Date - 如果加載了動物園,則會提供缺省原點,因此可以選擇省略參數origin=

該函數僅使用基R,並且被矢量化。它接受"Date"類向量,並在相應輸入日期或之前返回一個"Date"類的星期一向量。

lastmon <- function(x) 7 * floor(as.numeric(x-1+4)/7) + as.Date(1-4, origin="1970-01-01") 

例如,

> lastmon(as.Date(c("2016-01-15", "2016-01-11"))) 
[1] "2016-01-11" "2016-01-11" 

lastmon功能可以交替地簡化爲:

lastmon2 <- function(x) x - as.numeric(x-1+4)%%7 

注:也看到了SO回答herehereherehere更多用途nextfri或其變體。

相關問題