[14-02-07]

3.5 plyr 패키지

# 싱글 프로세싱하는 경우
library(plyr)

market_price <- read.csv("C:/Users/Byeongsoo/Documents/R/requisites.csv")

system.time({
    a1 <- ddply(market_price, .(A_NAME, M_TYPE_NAME), summarize, mean_price = mean(A_PRICE))
})
##    user  system elapsed 
##    0.06    0.02    0.08

멀티코어 프로세싱을 하기 위한 패키지는 doMC는 아쉽게도 고성능 리눅스 서버를 사용한다는 가정 아래에서 사용 가능하다. 나에게는 리눅스 서버가 없다.. 슬프다.

우리가 바라는 결과를 뽑기 위한 코드다.

ddply(market_price, .(M_TYPE_NAME, A_NAME), summarise, avg = mean(A_PRICE))
##     M_TYPE_NAME                A_NAME     avg
## 1      대형마트                고등어  1000.0
## 2      대형마트     고등어(30cm,국산)  5335.0
## 3      대형마트     고등어(냉동,국산)  2825.0
## 4      대형마트   고등어(냉동,수입산)  1500.0
## 5      대형마트     고등어(생물,국산)  4550.5
## 6      대형마트 냉동참조기(20cm,국산)   824.7
## 7      대형마트                  달걀  2472.5
## 8      대형마트            달걀(왕란)  2614.3
## 9      대형마트            달걀(특란)  2130.0
## 10     대형마트                닭고기  6573.5
## 11     대형마트          닭고기(육계)  7922.1
## 12     대형마트          닭고기(중간)  5580.0
## 13     대형마트                  동태   990.0
## 14     대형마트      돼지고기(삼겹살) 13358.3
## 15     대형마트    돼지고기(생삼겹살) 15045.0
## 16     대형마트                  명태  1207.7
## 17     대형마트       명태(45cm,국산)     0.0
## 18     대형마트     명태(45cm,수입산)  2095.6
## 19     대형마트     명태(냉동,수입산)  2384.6
## 20     대형마트     명태(러시아,냉동)  2376.0
## 21     대형마트     명태(생물,수입산)   476.5
## 22     대형마트                    무  1616.4
## 23     대형마트               무(1kg)  1852.5
## 24     대형마트            무(세척무)  2156.0
## 25     대형마트        무(세척무, 중)  1834.3
## 26     대형마트                    배  3961.3
## 27     대형마트              배(신고)  5997.0
## 28     대형마트     배(신고),중급(대)  3033.3
## 29     대형마트        배(신고, 600g)  4374.8
## 30     대형마트              배(중품)  3705.3
## 31     대형마트         배(중품),신고  2186.7
## 32     대형마트                  배추  2240.9
## 33     대형마트         배추(2.5~3kg)  2470.2
## 34     대형마트            배추(국산)  2745.0
## 35     대형마트            배추(중간)  2272.9
## 36     대형마트                  사과  2718.0
## 37     대형마트            사과(부사)  2162.0
## 38     대형마트   사과(부사),중급(중)  1650.0
## 39     대형마트      사과(부사, 300g)  3003.9
## 40     대형마트            사과(중품)  2533.6
## 41     대형마트                  상추  1397.0
## 42     대형마트            상추(100g)  1155.5
## 43     대형마트                쇠고기 21720.0
## 44     대형마트   쇠고기(육우,불고기) 23100.0
## 45     대형마트   쇠고기(한우,불고기) 21262.7
## 46     대형마트     쇠고기(한우1등급) 19340.0
## 47     대형마트     쇠고기(한우2등급) 12920.0
## 48     대형마트                애호박  1036.7
## 49     대형마트                  양파  3062.2
## 50     대형마트         양파(1.5kg망)  3009.4
## 51     대형마트          양파(작은망)  3008.8
## 52     대형마트                  오이   448.2
## 53     대형마트          오이(다다기)   528.7
## 54     대형마트                오징어  2446.7
## 55     대형마트          오징어(냉동)  1548.0
## 56     대형마트     오징어(냉동,국산)  1998.8
## 57     대형마트   오징어(냉동,수입산)  2120.0
## 58     대형마트     오징어(생물,국산)  2369.8
## 59     대형마트   오징어(생물,수입산)  1680.0
## 60     대형마트                  조기  6136.0
## 61     대형마트       조기(국산,냉동)  2884.4
## 62     대형마트       조기(국산,생물)  3807.0
## 63     대형마트       조기(냉동,국산)  2104.5
## 64     대형마트     조기(냉동,수입산)  4105.0
## 65     대형마트       조기(생물,국산)  4165.0
## 66     대형마트     조기(생물,수입산)   990.0
## 67     대형마트     조기(중국산,생물)  1990.0
## 68     대형마트                  호박   754.4
## 69     대형마트      호박(인큐베이터)   858.2
## 70     전통시장     고등어(30cm,국산)  2666.7
## 71     전통시장     고등어(냉동,국산)  3524.8
## 72     전통시장   고등어(냉동,수입산)  1750.0
## 73     전통시장     고등어(생물,국산)  3269.4
## 74     전통시장   고등어(생물,수입산)  1500.0
## 75     전통시장                  달걀  2500.0
## 76     전통시장            달걀(왕란)  2093.6
## 77     전통시장            달걀(특란)  2225.0
## 78     전통시장                닭고기  6058.2
## 79     전통시장          닭고기(육계)  5465.7
## 80     전통시장                  동태  4900.0
## 81     전통시장      돼지고기(삼겹살) 12758.6
## 82     전통시장    돼지고기(생삼겹살) 11769.1
## 83     전통시장                  명태  1500.0
## 84     전통시장     명태(45cm,수입산)  2872.3
## 85     전통시장     명태(냉동,수입산)  3370.4
## 86     전통시장     명태(러시아,냉동)  2282.0
## 87     전통시장     명태(생물,수입산)  2352.9
## 88     전통시장                    무  1397.9
## 89     전통시장               무(1kg)  1415.3
## 90     전통시장            무(세척무)  1311.1
## 91     전통시장                    배  2944.4
## 92     전통시장              배(신고)  3545.5
## 93     전통시장        배(신고, 600g)  3099.4
## 94     전통시장              배(중품)  3111.1
## 95     전통시장         배(중품),신고  3750.0
## 96     전통시장                  배추  2470.7
## 97     전통시장         배추(2.5~3kg)  2723.5
## 98     전통시장            배추(중간)  2129.4
## 99     전통시장                  사과  2651.0
## 100    전통시장            사과(부사)  2459.4
## 101    전통시장      사과(부사, 300g)  2524.4
## 102    전통시장            사과(중품)  2437.5
## 103    전통시장                삼겹살 12500.0
## 104    전통시장                  상추   871.1
## 105    전통시장            상추(100g)   686.8
## 106    전통시장                  생닭  6000.0
## 107    전통시장          쇠고기(등심) 12466.7
## 108    전통시장   쇠고기(육우,불고기) 17325.0
## 109    전통시장   쇠고기(한우,불고기) 17951.1
## 110    전통시장     쇠고기(한우1등급) 17800.0
## 111    전통시장     쇠고기(한우2등급) 14600.0
## 112    전통시장                애호박   627.9
## 113    전통시장                  양파  2233.3
## 114    전통시장         양파(1.5kg망)  2209.4
## 115    전통시장          양파(작은망)  2389.8
## 116    전통시장                  오이   379.6
## 117    전통시장          오이(다다기)   378.5
## 118    전통시장                오징어  1660.0
## 119    전통시장          오징어(냉동)  1583.3
## 120    전통시장     오징어(냉동,국산)  2327.7
## 121    전통시장     오징어(생물,국산)  2152.7
## 122    전통시장                  조기  2771.4
## 123    전통시장       조기(국산,냉동)  1517.3
## 124    전통시장       조기(국산,생물)  2223.2
## 125    전통시장       조기(냉동,국산)  1840.4
## 126    전통시장     조기(냉동,수입산)  3426.4
## 127    전통시장       조기(생물,국산)  1871.8
## 128    전통시장     조기(중국산,생물)  4500.0
## 129    전통시장                  호박   559.2
## 130    전통시장      호박(인큐베이터)   787.8
trans_market_price <- ddply(market_price, .(M_TYPE_NAME, A_NAME), transform, 
    avg = mean(A_PRICE))
head(trans_market_price)
##    P_SEQ M_SEQ            M_NAME A_SEQ            A_NAME       A_UNIT
## 1 301107    22   이마트 여의도점    13            고등어  1마리(30cm)
## 2 322354    74   이마트 왕십리점   316 고등어(30cm,국산)  1마리(30cm)
## 3 323250    56        롯데백화점   316 고등어(30cm,국산)        1마리
## 4 323378    16 현대백화점 미아점   316 고등어(30cm,국산)        1마리
## 5 323442    15     이마트 미아점   316 고등어(30cm,국산) 1마리 (30cm)
## 6 313052    16 현대백화점 미아점   316 고등어(30cm,국산)        1마리
##   A_PRICE P_YEAR_MONTH    ADD_COL M_TYPE_CODE M_TYPE_NAME M_GU_CODE
## 1    1000       May-12     작은것           2    대형마트    560000
## 2    2800       Jul-12 2마리 5600           2    대형마트    200000
## 3    7000       Jul-12     국내산           2    대형마트    140000
## 4    5000       Jul-12                      2    대형마트    290000
## 5    2800       Jul-12                      2    대형마트    290000
## 6    6000       Jun-12                      2    대형마트    290000
##   M_GU_NAME  avg
## 1  영등포구 1000
## 2    성동구 5335
## 3      중구 5335
## 4    성북구 5335
## 5    성북구 5335
## 6    성북구 5335

transfrom은 summarise함수와 달리 열을 추가한 data.frame전체를 반환한다.
반면 위에서 봤듯이, summarise는 쪼개는 기준이 되는 인수와 열을 추가한 데이터를 반환한다.