위에 파일을 다운로드 받아서 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이라는 말이 포함된 것을 제외한 나머지를 선택하라는 뜻이 되겠다. (복잡하니까 그냥 외우면 편하다.)
'R' 카테고리의 다른 글
R, pdf 문서에서 텍스트 추출하기 (Xpdf) (0) | 2018.06.22 |
---|---|
R, data sorting하기 order() (0) | 2018.05.21 |
R 데이터 재구조화 - cast() (0) | 2018.03.30 |
R 시계열 데이터 변환 aggregate() (0) | 2018.03.22 |
R 데이터 변형하기 - subset(), which() (0) | 2018.03.19 |