2017-08-18 6 views
1

J'ai 2 objets qui sont l'année-semaine #. Je voudrais trouver la différence entre les deux semaines.R trouver la différence entre deux objets par semaine

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 

Des suggestions?

REMARQUE: je ne peux pas utiliser la date d'origine car mes données ne les incluent pas en raison de l'agrégation. Il doit donc y avoir une différence entre les # year_week.

+3

Une fois que vous utilisez 'strftime' vous don've avoir des objets "année-semaine", vous avez des chaînes. – Gregor

Répondre

4

Calculez les différences en semaines directement sur date1 et date2 sans le convertir en caractère.

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
library(lubridate) 
dd1$date1 <- ymd(dd1$date1) 
dd1$date2 <- ymd(dd1$date2) 
interval_p = interval(dd1$date1, dd1$date2) 
weeks = interval_p %/% weeks(1)