Расчет количества недель для каждого года на основе дат с использованием R - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть набор данных с датами 2 разных года (2009 и 2010), и я хотел бы иметь соответствующий номер недели для каждой даты.

Мой набор данных похож на это:

  anim <- c(012,023,045,098,067)
  dob <- c("01-09-2009","12-09-2009","22-09-2009","10-10-2010","28-10-2010")
  mydf <- data.frame(anim,dob)
  mydf
    anim    dob
1   12   01-09-2009
2   23   12-09-2009
3   45   22-09-2009
4   98   10-10-2010
5   67   28-10-2010

Я хотел бы иметь переменную "week" в третьем столбце с соответствующими номерами недель для каждой даты.РЕДАКТИРОВАТЬ: Примечание: первая неделя начинается 1 января, вторая неделя начинается 8 января каждого года

Любая помощь будет высоко ценится.

Баз

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Ваше определение "недели года"

РЕДАКТИРОВАТЬ: Примечание: первая неделя начинается 1 января, вторая неделя начинается 8 января каждого года

отличается от стандартных поддерживаемых strftime:

%U
    Week of the year as decimal number (00–53) using Sunday as the first day 1 
    of the week (and typically with the first Sunday of the year as day 1 of 
    week 1). The US convention.
%W
    Week of the year as decimal number (00–53) using Monday as the first day 
    of week (and typically with the first Monday of the year as day 1 of week 
    1). The UK convention.

Так что вам нужно вычислить его на основе числа дня в году.

mydf$week <- (as.numeric(strftime(as.POSIXct(mydf$dob, 
                                             format="%d-%m-%Y"), 
                                  format="%j")) %/% 7) + 1
0 голосов
/ 07 сентября 2017

Пост 2011 Ответ

library(lubridate)
mydf$week <- week(mydf$week)
Пакет

lubridate прост для повседневных задач, подобных этой.

...