nzb.RData
다운로드

Q. 시계열 데이터 분석할 때 hourly data의 날짜별 평균을 구해 daily data로 바꾸려면 어떻게 하면 될까?

본 데이터는 2017년 12월 1일부터 2018년 1월 31일까지 미국 뉴욕주 15개 지역에서 매 시간마다 기록된 전력 가격(단위: $/MWh)이다. 다운 받아서 불러보면 이렇게 생겼다. 관측치는 총 1488개(=62일 x 24시간)이다. (모바일 화면에서는 head()의 결과가 엄청 지저분하게 보이는데 방법이 없다. 양해를.)

 

> load("nzb.RData")
> head(nzb)
                 time CAPITL CENTRL DUNWOD GENESE  H Q HUD VL 
1 2017-12-01 00:00:00  28.00   8.96  22.16   8.20 6.46  21.73  
2 2017-12-01 01:00:00  27.50   8.23  21.54   7.50 5.72  21.11  
3 2017-12-01 02:00:00  27.15   7.72  21.11   6.97 5.26  20.69  
4 2017-12-01 03:00:00  26.20   7.58  20.42   6.86 5.21  20.01  
5 2017-12-01 04:00:00  27.73   7.84  21.53   7.09 5.27  21.09  
6 2017-12-01 05:00:00  27.62  11.82  22.88  11.04 9.54  22.52  

 

time 변수가 시간 class가 맞는지 확인해 본다. 만약 character라면 strptime() 함수를 써서 변환해 줘야 한다. (참조: R에서 시간 처리하기 strptime())

 

> class(nzb$time)
[1] "POSIXlt" "POSIXt" 

 

time 변수는 초단위까지의 정보를 가지고 있다. hourly로 바꾸기 위해선 일단 날짜변수가 있어야 한다.

 

> nzb$date<-as.Date(nzb$time)
> head(nzb)
                 time CAPITL CENTRL DUNWOD GENESE  H Q      date
1 2017-12-01 00:00:00  28.00   8.96  22.16   8.20 6.46 2017-12-01
2 2017-12-01 01:00:00  27.50   8.23  21.54   7.50 5.72 2017-12-01
3 2017-12-01 02:00:00  27.15   7.72  21.11   6.97 5.26 2017-12-01
4 2017-12-01 03:00:00  26.20   7.58  20.42   6.86 5.21 2017-12-01
5 2017-12-01 04:00:00  27.73   7.84  21.53   7.09 5.27 2017-12-01
6 2017-12-01 05:00:00  27.62  11.82  22.88  11.04 9.54 2017-12-01

 

> nzc<-aggregate(nzb$CAPITL,list(nzb$date),mean)
> head(nzc)
     Group.1        x
1 2017-12-01 29.08375
2 2017-12-02 26.18875
3 2017-12-03 26.27917
4 2017-12-04 30.10625
5 2017-12-05 28.71000
6 2017-12-06 27.29917

 

변수 이름을 안 정했으니까 저렇게 나온다. 맘에 드는 다른 이름으로 바꾸면 완성

 

> names(nzc)<-c("date","CAPITL")
> head(nzc)
        date   CAPITL
1 2017-12-01 29.08375
2 2017-12-02 26.18875
3 2017-12-03 26.27917
4 2017-12-04 30.10625
5 2017-12-05 28.71000
6 2017-12-06 27.29917

'R' 카테고리의 다른 글

R, data에서 특정 변수 제외하기  (0) 2018.04.12
R 데이터 재구조화 - cast()  (0) 2018.03.30
R 데이터 변형하기 - subset(), which()  (0) 2018.03.19
R에서 데이터 다루기  (0) 2018.03.13
R 막대그래프 barplot(), ggplot()  (0) 2018.03.09
Posted by jujaeuk
,