nzb.RData
다운로드

위에 파일을 다운로드 받아서 R 작업 디렉토리에 복사하고 R을 실행한 후 불러들인다. (지난번 예제의 결과를 저장한 것이다.) 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  

 

아마도 저런 모양의 데이터를 볼 수 있을 텐데, CAPITL 변수부터는 각 지역의 매시간 가격이고, 맨 앞에 time 변수는 시간을 나타내고 있다.
특정 변수만을 골라서 새로운 데이터 셋을 만들고 싶으면 지난 예제에 배운 대로

 

> nzb1<-subset(nzb, name==c("CAPITL","CENTRL"))

 

하거나, 더 간단하게

 

> nzb1<-nzb[c("CAPITL,"CENTRL")]

 

이렇게 하는 방법도 있다. 결과는 둘 다 같다. 만약 선택할 변수가 두어개라면 이런 식으로 쓰면 되는데, 변수가 50개 쯤 되는데 한 개의 변수를 뺀 나머지 49개 변수로 된 새로운 데이터를 만들어야 한다면 좀 귀찮다. 대신 뺄 변수명만을 쓰는 것으로 간단하게 처리할 명령어가 있으면 좋은데 이게 생각보다 복잡하다.
다음과 같이 하면 된다. 위에 데이터에서 time 변수 하나만 제외하고 나머지 모든 변수들로 된 새로운 데이터 셋을 만들고 싶으면,

 

> nzb2<-nzb[,!(names(nzb) %in% c("time"))]

 

이렇게 쓴다. 변수명 다음에 나오는 대괄호 안에는 변수의 조건을 쓰게 되어 있는데, 중간에 콤마(,)는 열과 행을 구분하는 기호이다. 콤마 왼쪽에 아무것도 없다는 것은 열에 대해서는 별다른 명령이 없고 모든 열을 다 선택하라는 뜻이고, 콤마 오른쪽에 있는 복잡한 식은 저 조건에 맞는 열을 선택하라는 뜻이다.
콤마 오른쪽에 있는 !(names(nzb) %in% c("time))가 뜻하는 것은 nzb 데이터 셋의 변수 이름 중에 time이라는 말이 포함된 것을 제외한 나머지를 선택하라는 뜻이 되겠다. (복잡하니까 그냥 외우면 편하다.)

Posted by jujaeuk
,