R: Получите номер рабочей недели, а не семидневных периодов с 1 января.

Привет, я смотрю данные о ценах на товары за несколько лет. Я хочу суммировать цены по рабочим неделям, а не по неделям, определяемым семидневными периодами с 1 января. Когда я попробовал:

data <- mutate(data, week = week(strptime(Date, "%m/%d/%Y")))

Функция lubridate week () считает «1/13/10» (mdy) как неделю 2 и «1/14/10» как неделю 3. Я хочу, чтобы они были на одной неделе. Практически любой пробег пн-пт на той же неделе. Если год начинается в среду, я хочу, чтобы неделя 1 была среда-пт, а неделя 2 начиналась в следующий понедельник. У меня нет данных по выходным. Есть предположения? Спасибо


person dcotes    schedule 31.12.2015    source источник


Ответы (1)


Это даст вам номер недели, если столбец Date находится в формате даты (вы можете использовать as.Date () для преобразования):

data <- mutate(data, week = format(Date, '%U'))

Если вам нужна неделя и год, вы можете использовать:

data <- mutate(data, week = format(Date, '%Y-%U'))

Он будет правильно нумеровать неполные недели.

Примечание: номер недели начинается с 00 (но это не должно быть проблемой).

Вы также можете сделать это БЕЗ dplyr, и он изменится, например:

data$week <- format(data$Date, '%U')
person Gopala    schedule 31.12.2015
comment
Ваш код вызывает ошибку без загрузки пакетов _1 _ / _ 2_. - person Artem Klevtsov; 01.01.2016
comment
Правильный. Требуется dplyr. Но, поскольку в опубликованном вопросе для начала использовалось изменение, я предположил, что решение dplyr было приемлемым. Я отредактирую, чтобы добавить версию без dplyr. - person Gopala; 01.01.2016