我有2个年份#对象。我想找到两周之间的差异。
dd1 <- data.frame(date1 = as.Date('2015-01-01') + 1:31
, date2 = as.Date('2016-03-01') + 1:31
)
dd1$wk1 <- strftime(dd1$date1, format = '%Y-%W')
dd1$wk2 <- strftime(dd1$date2, format = '%Y-%W')
dd1$week_diff <- difftime(dd1$wk1, dd1$wk2)
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
有什么建议吗?
注意:我不能使用原始日期,因为我的数据由于聚合而不包含它们,所以它必须是year_week#的差异。
答案 0 :(得分:4)
直接在date1
和date2
上计算周数差异,而不将其转换为字符。
dd1$week_diff <- difftime(dd1$date1, dd1$date2, units = "weeks")
head(dd1)
date1 date2 week_diff
1 2015-01-02 2016-03-02 -60.71429 weeks
2 2015-01-03 2016-03-03 -60.71429 weeks
3 2015-01-04 2016-03-04 -60.71429 weeks
4 2015-01-05 2016-03-05 -60.71429 weeks
5 2015-01-06 2016-03-06 -60.71429 weeks
6 2015-01-07 2016-03-07 -60.71429 weeks
答案 1 :(得分:1)
library(lubridate)
dd1$date1 <- ymd(dd1$date1)
dd1$date2 <- ymd(dd1$date2)
interval_p = interval(dd1$date1, dd1$date2)
weeks = interval_p %/% weeks(1)