R로하는 데이터시각화 :: 데이터멍잉 - tapply, aggregate, by
R을 활용하여 데이터시각화를 하면서
꼭 필요한 부분이 바로 ‘데이터 멍잉'입니다.
데이터 멍잉[data munging]이 무엇인지 알아보야야 하는데요~
즉, 데이터 멍잉이란 목적에 맞게 데이터를 여러가지
방법으로 다듬는 과정이라고 생각할 수 있겠습니다^^
오늘은 이런 데이터멍잉의 방법으로
tapply, by, aggregate 함수를 적용해보려고 합니다.
**
이번예제는 R로하는데이터시각화의
예제를 바탕으로 진행됨을 알려드립니다.
**
저 역시 R을 공부하기 전까지는
일일이 엑셀을 이용하여 데이터를 이리저리 바꾸곤 했었습니다.
(물론 지금도 엑셀의 기능도 사용하고있습니다.)
이번 예제에서 활용할 데이터는
서울열린데이터광장에서 공개하는 [생필품가격 데이터]이며,
직접 열린데이터광장에서 받을 수도 있지만,
친절히도 저자님께서 url로 실행해볼 수 있도록
해주셨으니 그것을 바탕으로 진행하도록 하겠습니다.
그럼 먼저,
R-studio에서 데이터를 불러오겠습니다.
market_price <- read.csv("http://dl.dropbox.com/u/8686172/requisites.csv", fileEncoding = "euc-kr")
<사용예제 데이터>
데이터의 형태는 아래 사진과 같습니다.
느낌부터가 복잡복잡하지요?
이 데이터를 바탕으로
데이터멍잉과정을 살펴보겠습니다.
tapply, by, aggregate중에
가장먼저 살펴볼것은 'tapply'함수입니다.
1. tapply
[ tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE) ]
X는 우리가 확인하고자하는 가격,INDEX에는 리스트를 입력합니다.
(factor형으로 구성된 리스트)
Fun에는 함수명을 입력합니다.
**
tapply의 특징
tapply는 키가 하나이고, fun으로 입력한 함수의 리턴 값이 하나라면,
>> 벡터형의 데이터를 반환합니다.
**이것보다 복잡한 데이터가 리턴될 경우
>> 행렬이나 리스트형태로 반환합니다.
EX ) tapply(market_price$"A_PRICE", market_price[,c("M_TYPE_NAME", "A_NAME")], mean)
이렇게 나오는 코드는 아래와 같습니다.
행: ‘M_TYPE_NAME’
열: ‘A_NAME’ 으로 구성된 행렬 데이터입니다.
mean으로 인해 내부값은 모두 평균값이 됩니다.
2. by
ex ) by(market_price$A_PRICE, market_price[,c("M_TYPE_NAME", "A_NAME")], mean)
두 번째로 살펴볼것은 'by'함수입니다.
위에서 소개한 tapply와 입력하는 방식은 비슷하지만,
조금은 다릅니다.
또한, 다른 작업방식으로 진행됩니다.
**
by의 작업방식
① 가격을(A_NAME)을 분리한 후,
(입력된 data.frame 키 기준)
②각 가격에 mean함수를 적용
③이를 리스트로 엮어서 리턴.
(첫 번째 인자와 두 번째 인자로 입력되는 데이터형의 길이는 같아야 된다.)
이번 예제에서는 같은 데이터를
사용하였기에, 문제가 없습니다.
이렇게 나오는 함수는 아래 사진과 같습니다.^^
마지막으로 aggregate함수를 살펴보겠습니다.
저자가 말하는 것처럼 저에게도 이 aggregate함수가
가장 눈에 익숙한 형태로 들어와서 편리했습니다.
자, 그럼 aggregate함수를 살펴보겠습니다.
3. aggregate
aggregate(market_price$A_PRICE, market_price[,c("M_TYPE_NAME", "A_NAME")], mean)
aggregate(A_PRICE ~ M_GU_NAME + A_NAME, market_price, mean)
이런 형태를 갖고 있으며
결과의 형태는 아래의 사진과 같습니다.
현재까지도 가장 많이 사용하고있는 기능인 것 같습니다^^
시각화를 하기 전, 데이터를 다듬는 과정에서
정말 유용하게 쓰이기때문에, 꼭 알아두셨으면합니다.
마지막으로, 오늘 사용한예제들의 결과를
한번에 묶어서 살펴보겠습니다.
'시각화 > R' 카테고리의 다른 글
▶R로만드는 데이터시각화 : rMaps를 이용하여 인터랙티브지도 그리기 Leaflet map그리기 (2) | 2014.04.20 |
---|---|
▶R로만드는 데이터시각화 : 데이터멍잉 응용 - 대형마트vs전통시장 시각화 (0) | 2014.04.10 |
▶R로만드는 데이터시각화 : 기본예제 - 반복구문 repeat, while, for (0) | 2014.04.08 |
▶R로만드는 데이터시각화 : 기본예제 - 데이터다루기 apply, adply (0) | 2014.04.06 |
▶R로만드는 데이터시각화 : 기본예제 - 데이터다루기 factor와 vector (0) | 2014.04.04 |