R의 reshape 패키지를 이용하여 데이터를 재구성하는 방법을 살펴보겠습니다.


원래 데이터


해당 지역의 10000명당 기관의 수를 나타낸 데이터입니다. (출처-통계청)

sgg_kor facility_type 2003fac 2004fac 2005fac 2006fac 2007fac
 4 계 상급종합병원 0.0086 0.0086 0.00852 0.0087 0.0087 6 계 종합병원 0.0494 0.0494 0.05054 0.0510 0.0530 8 계 병원 0.1645 0.1755 0.18450 0.1937 0.2127 10 계 요양병원 0.0139 0.0231 0.04120 0.0727 0.1200 14 계 치과병원 0.0211 0.0221 0.02517 0.0274 0.0311 18 계 한방병원 0.0311 0.0320 0.03024 0.0292 0.0288 22 계 조산원 0.0143 0.0129 0.01055 0.0103 0.0104 24 계 보건소 0.0473 0.0475 0.04750 0.0478 0.0481 26 계 보건지소 0.2601 0.2605 0.25859 0.2571 0.2602 28 계 보건진료소 0.3865 0.3881 0.38504 0.3843 0.3875 30 계 보건의료원 0.0035 0.0035 0.00345 0.0034 0.0035 36 서울 상급종합병원 0.0195 0.0195 0.01942 0.0193 0.0196 38 서울 종합병원 0.0418 0.0409 0.04079 0.0406 0.0412 40 서울 병원 0.1158 0.1168 0.12431 0.1304 0.1432 42 서울 요양병원 0.0029 0.0058 0.01068 0.0251 0.0461


Melt

Melt는 Column을 Row로 바꾸는 함수입니다. (Key=id에 지정, 나머지값들은 Row로 변환)


facility <- melt(facility, id=c("sgg_kor", 'facility_type'))

sgg_kor facility_type variable value
 1 계 상급종합병원 2003fac 0.0086

 2 계 종합병원 2003fac 0.0494

 3 계 병원 2003fac 0.1645

 4 계 요양병원 2003fac 0.0139
 5 계 치과병원 2003fac 0.0211
 6 계 한방병원 2003fac 0.0311


reshape

Reshape함수를 통해 Row를 Column으로 바꿀 수 있습니다. (Key를 idvar로 놓고, 컬럼으로 바꾸고 싶은 변수를 timevar에 지정)

facility <- reshape(facility, idvar=c("sgg_kor", "variable"), timevar="facility_type", direction="wide")

sgg_kor variable value.상급종합병원 value.종합병원 value.병원 value.요양병원 value.치과병원     

계 2003fac 0.0086 0.0494 0.1645 0.0139 0.02 서울 2003fac 0.0195 0.0418 0.1158 0.0029 0.0350 강남구 2003fac 0.0373 0.0560 0.2425 NA 0.1679 강동구 2003fac 0.0209 0.0417 0.1043 NA NA 강서구 2003fac NA 0.0185 0.1668 0.0185 0.0185 관악구 2003fac NA 0.0190 0.0949 NA NA