我有一个与Date有关的问题。我需要确定日期,即从1961年到2006年每年最接近4月1日的星期二。
我可以从日历查看,我看到以下内容:
1961 1961-04-04
1962 1962-04-03
1963 1963-04-02
1964 1964-03-31
但是,我可以在R?
中轻松地从日历中发现它们这个问题有空气污染网络管理的背景。具体而言,1961年至2005年间在英国运营的历史烟雾和二氧化硫网络是在污染年度和#34;从这个问题中提到的日期开始,这些年份的星星。
答案 0 :(得分:5)
这是一个解决方案
nearestTuesday <- function(date) {
delta <- as.POSIXlt(date)$wday - 2
if(abs(delta) < 4)
next_date <- as.Date(date) - delta
else
next_date <- as.Date(date) + (7 - delta)
return(next_date)
}
lapply(ISOdate(1961:2006, 4,1), nearestTuesday)