728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


데이터를 사용하는데 데이터가 특정 행(특히나 팩터)을 기준으로 묶을 수 있는 경우가 있다.

가령 아래와 같은 경우이다.



이 데이터 역시 data.go.kr이다. 마침 예제에 정확하게 부합하는 데이터다.

해당 데이터는 분류1로도 그룹을 만들 수 있고 분류2로도 그룹을 만들 수 있다.

그룹을 만들기 위해서 R에서는 plyr이라는 패키지를 사용한다.

사실 상 단순히 패키지를 넘어서서 거의 필수 라이브러리 취급을 받고있다. 통계의 기본이 되는 라이브러리이기 때문이다.


plyr라이브러리


install.package('plyr')


이 라이브러리를 임포트해야만 그룹화를 할 수 있는건 아니지만 가장 쉽게 사용하려면 이 놈말곤 없다.

이제 엑셀에서 그룹화 한것처럼 그룹화를 할 수 있다.

위의 데이터를 예를 들어보자. 분류1을 기준으로 1월과 2월의 합계와 평균을 나타내보자.


library('plyr')

ds <- read.csv('2016년_사고유형별_월별_교통사고통계_20161019.csv')

y<-ddply(ds,.(분류1),summarise,X1월.합계=sum(X1월),X1월.평균=mean(X1월),X2월.합계=sum(X2월),X2월.평균=mean(X2월))

print(y)


3번째 줄만 유심히 보면된다.

먼저 1번째 파라메터로 데이터를 넣는다.

2번째 파라메터는 그룹을 만들때의 기준 열을 고르는데 .()함수를 써서 넣어준다.

이때 .()함수에 넣을 값은 당연하지만 데이터안에 존재하는 열이여야한다.

그다음 3번째 파라메터는 summarise로 고정, 당분간 신경쓰지 않아도 된다.

4번째 부터는 행의 이름과 넣을 값을 정해주면된다.

사용 결과는 아래와 같이된다.



사족으로 분리되어있는 두 그룹을 합치려면 어떻게해야할까 예를 들면 아래와 같은 상황이다.


library('plyr')

ds <- read.csv('2016년_사고유형별_월별_교통사고통계_20161019.csv')

y1<-ddply(ds,.(분류1),summarise,X1월.합계=sum(X1월),X1월.평균=mean(X1월),X2월.합계=sum(X2월),X2월.평균=mean(X2월))

y2<-ddply(ds,.(분류1),summarise,X3월.합계=sum(X3월),X3월.평균=mean(X3월),X4월.합계=sum(X4월),X4월.평균=mean(X4월))



y1과 y2를 합쳐서 하나를 만들고 싶다면 merge함수를 사용하면된다. 이때 키값을 주면 그 키값을 바탕으로 join이 이루어진다.


library('plyr')

ds <- read.csv('2016년_사고유형별_월별_교통사고통계_20161019.csv')

y1<-ddply(ds,.(분류1),summarise,X1월.합계=sum(X1월),X1월.평균=mean(X1월),X2월.합계=sum(X2월),X2월.평균=mean(X2월))

y2<-ddply(ds,.(분류1),summarise,X3월.합계=sum(X3월),X3월.평균=mean(X3월),X4월.합계=sum(X4월),X4월.평균=mean(X4월))

y<-merge(y1,y2,by = '분류1')

print(y)



이렇게 따로 값을 구해도 키인 열이 있다면 그 열을 바탕으로 합치면 된다.

+ Recent posts