dates <- NULL
date <- as.Date("01/01/2014","%d/%m/%Y")
dates <- data.frame(date=as.Date(character())
,cal_day_in_year_num = numeric()
,cal_week_id = numeric()
,cal_week_start_date = as.Date(character())
,cal_week_end_date = as.Date(character())
)
for (i in 1:365) {
dates[i,1] <- date + days(i-1) ## date
dates[i,2] <- yday(dates[i,1]) ## cal_day_in_year_num
dates[i,3] <- paste(year(dates[i,1]),sprintf("%02d",week(dates[i,1])),sep="") ## cal_week_id
dates[i,4] <- floor_date(dates[i,1], "week") ## cal_week_start_date
dates[i,5] <- ceiling_date(dates[i,1], "week") ## cal_week_end_date
}
View(dates)
对于给定的日期,我尝试使用lubridate函数来计算相应的开始和结束日期
我的问题是,lubridate是采取的第一天,一周是星期天,而我需要它是星期一-有人有办法绕过这一点?
3条答案
按热度按时间axkjgtzd1#
您可以在base中创建自己的函数来完成此操作。例如,
vuv7lop32#
稍微晚了一点,但只是说现在lubridate中有一个选项,默认为星期日,但可以设置为其他值。
u5i3ibmn3#
正如Wave所评论的那样,你可以只使用+1来改变日期,你也可以像以前那样做,而不需要缓慢的
for
循环。