2017-12-15 5 views
1

현재 다음 데이터가 있습니다.주 번호 지정 (시계열)

> head(total) 
    ID WEEK QTY SHOP EUR KEY  COL 
1: 1123539 1147  1  GR 2.39 652159 10090100003 
2: 3102228 1129  1  GR 2.15 257871 10090100003 
3: 3321265 1129  1  GR 2.15 257871 10090100003 
4: 3321265 1122  1  GR 2.15 257871 10090100004 
5: 1120774 1151  1  GR 2.39 213290 10090100005 
6: 1145763 1157  1  GR 2.39 213290 10090100005 

> tail(total) 
    ID WEEK QTY SHOP EUR KEY  COL 
1: 1133538 1728  1  GK 3.19 9999879 825277200104 
2: 1133538 1728  1  GK 3.19 9999879 825277200104 
3: 1141960 1691  1  GK 3.29 9999879 825277200104 
4: 1302364 1729  1  GK 3.19 9999879 825277200104 
5: 1808485 1714  1  GK 3.29 9999879 825277200104 
6: 1808485 1720  1  GK 3.19 9999879 825277200104 

WEEK 열에 날짜를 지정하려고합니다.

데이터는

데이터는 WEEK 24/12/2017에서 종료 (내 계산이 가서까지) 01/01/2001입니다 WEEK 1114에서 시작 - 30/12/2017

일주일 번역은 다음 (엑셀 계산)으로 정의된다;

대괄호 안에 수식을 Excel 시트에 붙여 넣습니다. R에서

A    B        C 
    Week  starting on      ending on 
    1479 Dec 31, 200 (=(A2+4157)*7-5)  Jan 6, 2008 (=(A2+4157)*7+1) 
    1480 Jan 7, 2008       Jan 13, 2008 
    1481 Jan 14, 2008      Jan 20, 2008 
    1482 Jan 21, 2008      Jan 27, 2008 

    Sys Start date     WEEK 
    septiembre 3, 1979 (03/09/1979) 1 (=ROUND((E2+2)/7;0)-4157) 

나는 그래서 예를 WEEK 1147에 대한 주시면 감사하겠습니다 August 26, 2001

어떤 도움에 날짜 August 20, 2001 일치해야 주

의 시작 날짜에 WEEK 수를 설정하려합니다.


은 내가 일년 수평선 위로 성공을 거두었 시계열로 데이터를 설정하려고하지만 몇 년 동안 (감사합니다 도움이에 대한 Aurélien에).

완벽하게 작동
library(lubridate) 
inds <- seq(as.Date("2001-01-01"), as.Date("2012-12-30"), by = "week") 
set.seed(25) 
w <- lubridate::week(ymd("2001-01-01","2012-12-30")) 
y <- lubridate::year(ymd("2001-01-01","2012-12-30")) 
myts <- ts(total$WEEK, 
      start = c(y[1],w[1]), 
      end = c(y[2],w[2]), 
      frequency = 52) 

답변

1
library(lubridate) 

dat = read.table("clipboard", header = TRUE) 

> head(dat) 
     ID WEEK QTY SHOP EUR KEY   COL 
1: 1123539 1147 1 GR 2.39 652159 10090100003 
2: 3102228 1129 1 GR 2.15 257871 10090100003 
3: 3321265 1129 1 GR 2.15 257871 10090100003 
4: 3321265 1122 1 GR 2.15 257871 10090100004 
5: 1120774 1151 1 GR 2.39 213290 10090100005 
6: 1145763 1157 1 GR 2.39 213290 10090100005 

ref_date = as.Date("2001-01-01") 

dat$DATE = ref_date + weeks(dat$WEEK - 1114) 

> dat 
     ID WEEK QTY SHOP EUR KEY   COL  DATE 
1: 1123539 1147 1 GR 2.39 652159 10090100003 2001-08-20 
2: 3102228 1129 1 GR 2.15 257871 10090100003 2001-04-16 
3: 3321265 1129 1 GR 2.15 257871 10090100003 2001-04-16 
4: 3321265 1122 1 GR 2.15 257871 10090100004 2001-02-26 
5: 1120774 1151 1 GR 2.39 213290 10090100005 2001-09-17 
6: 1145763 1157 1 GR 2.39 213290 10090100005 2001-10-29 
+0

! 내가 생각했던 것만 큼 복잡한 것은 아닙니다! 고마워요! – user113156