2015-04-14 2 views
1

У меня есть столбец строк в моем наборе данных, отформатированный в год неделе (например, «201401» эквивалентен 7 апреля 2014 года, или в первой финансовой неделе года)новообращенного года неделя строка датировать

Я нахожусь пытаясь преобразовать их в подходящую дату, поэтому я могу манипулировать ими позже, однако я всегда получаю дату дамы за данный год, в частности, 14 апреля.

например.

test_set <- c('201401', '201402', '201403') 
as.Date(test_set, '%Y%U') 

дает мне:

[1] "2014-04-14" "2014-04-14" "2014-04-14" 

ответ

1

Попробуйте что-то вроде этого:

> test_set <- c('201401', '201402', '201403') 
> 
> extractDate <- function(dateString, fiscalStart = as.Date("2014-04-01")) { 
+ week <- substr(dateString, 5, 6) 
+ currentDate <- fiscalStart + 7 * as.numeric(week) - 1 
+ currentDate 
+ } 
> 
> extractDate(test_set) 
[1] "2014-04-07" "2014-04-14" "2014-04-21" 

В основном , Я извлекаю недели от t он начинает год, конвертируя его в дни, а затем добавляя это количество дней до начала финансового года (менее 1 дня, чтобы все складывалось).

+0

Я закончил с аналогичным решением, используя lubridate, чтобы установить неделю –

0

Не 100% уверены, что ваш желаемый результат, но это может работать

as.Date(paste0(substr(test_set, 1, 4), "-04-07")) + 
    (as.numeric(substr(test_set, 5, 6)) - 1) * 7 

# [1] "2014-04-07" "2014-04-14" "2014-04-21"