1896 Question


아쉽게도 zoo, xts class 의 데이터셋을 dplyr package 의 다양한 함수(mutate(), summarize(), group_by() 등)와 조화시켜 사용하려면 class 변형없이 사용하기엔 어려울 것 같습니다.
그럼에도 dplyr 패키지의 함수들을 사용하고자 한다면 dplyr 이 원하는 데이터 인풋 클래스인 tbl 과 호환되는 데이터형식으로 바꾸어야 합니다.
아래의 시뮬레이션 코드가 바로 그와 같은 케이스라고 볼 수 있습니다.

A) example data

# library(xts)
# library(zoo)
# library(dplyr)

index <- matrix(rnorm(300, 1000, 8^2), 100, 3)
data <- xts(round(index, 1), as.Date(16001:16100)) # xts package for time series data
names(data) <- paste("Fund", 1:3, sep="_")
data
##            Fund_1 Fund_2 Fund_3
## 2013-10-23 1176.7 1131.9 1114.9
## 2013-10-24  976.3 1058.2 1051.3
## 2013-10-25  994.4 1027.9 1080.2
## 2013-10-26  926.6  976.8  999.4
## 2013-10-27 1051.4  969.3  999.5
## 2013-10-28 1097.6 1028.5  983.3
## 2013-10-29  974.7  900.9  952.8
## 2013-10-30  961.0 1022.7 1080.6
## 2013-10-31  966.9 1065.4 1036.9
## 2013-11-01  979.8  932.4 1004.0
## 2013-11-02 1019.4  969.8 1012.7
## 2013-11-03  937.7  949.6  943.8
## 2013-11-04 1038.2  966.6  978.9
## 2013-11-05  983.2  999.8 1012.9
## 2013-11-06  917.5  859.4 1100.4
## 2013-11-07  993.2 1016.5  932.3
## 2013-11-08  868.3  969.1  971.8
## 2013-11-09 1031.9  974.4 1083.0
## 2013-11-10  979.9  964.6  998.6
## 2013-11-11 1085.4 1070.1  979.3
## 2013-11-12 1021.6  918.8  952.1
## 2013-11-13  995.2  930.9  986.7
## 2013-11-14 1050.1 1095.6  912.3
## 2013-11-15  951.7 1001.3  936.3
## 2013-11-16  923.8 1016.3 1073.8
## 2013-11-17  921.6  916.6  979.5
## 2013-11-18 1028.2  913.1 1115.3
## 2013-11-19  865.3  955.2 1020.0
## 2013-11-20  942.9 1030.6  938.3
## 2013-11-21 1153.7 1059.4  937.2
## 2013-11-22 1001.5  977.5  871.4
## 2013-11-23 1023.2 1016.1  964.3
## 2013-11-24 1007.7 1048.4  947.9
## 2013-11-25  973.6 1052.4  946.4
## 2013-11-26 1002.7  977.2  996.1
## 2013-11-27  992.9  996.7  978.6
## 2013-11-28 1054.9  973.2 1010.5
## 2013-11-29 1052.1 1063.6  980.3
## 2013-11-30  965.1 1053.7 1009.5
## 2013-12-01  985.3 1152.3 1045.6
## 2013-12-02 1089.0  989.6  950.6
## 2013-12-03 1082.1 1043.1 1014.4
## 2013-12-04 1085.6 1023.3  975.7
## 2013-12-05  974.8 1041.4 1015.9
## 2013-12-06 1099.1 1030.3 1006.1
## 2013-12-07  952.1  983.0 1077.0
## 2013-12-08  984.4  949.3 1087.8
## 2013-12-09  995.0  908.4 1022.5
## 2013-12-10 1074.8 1131.4  946.6
## 2013-12-11 1082.6 1050.3 1096.7
## 2013-12-12 1053.1 1037.9 1001.9
## 2013-12-13 1026.3  923.5  924.0
## 2013-12-14 1123.5 1003.9  971.4
## 2013-12-15 1064.6  951.4  972.0
## 2013-12-16 1047.0  913.5 1049.3
## 2013-12-17  990.4 1021.3 1116.0
## 2013-12-18 1043.1  992.7  789.0
## 2013-12-19  998.4 1034.0  946.9
## 2013-12-20  943.2  827.1  987.3
## 2013-12-21  996.5 1004.6  999.2
## 2013-12-22 1003.9  946.6 1091.1
## 2013-12-23 1083.9 1026.2 1096.9
## 2013-12-24 1036.5  923.7  951.3
## 2013-12-25 1056.3 1050.8 1046.8
## 2013-12-26  955.7  996.2 1080.0
## 2013-12-27  968.5 1000.3 1027.4
## 2013-12-28  961.1 1103.5  902.3
## 2013-12-29  871.8  917.2 1098.7
## 2013-12-30 1070.0  918.4  976.1
## 2013-12-31  989.0 1018.2  962.4
## 2014-01-01 1039.4 1068.5  950.1
## 2014-01-02 1028.6 1109.0 1019.6
## 2014-01-03 1034.4  932.0  969.8
## 2014-01-04 1084.5  923.6 1005.9
## 2014-01-05 1102.6 1024.1 1134.2
## 2014-01-06 1041.8 1012.9  943.2
## 2014-01-07  980.8 1020.9 1002.8
## 2014-01-08 1028.7 1174.8 1023.1
## 2014-01-09  994.0  950.5 1006.8
## 2014-01-10  992.7  975.1  993.6
## 2014-01-11  974.6  991.7  964.6
## 2014-01-12 1108.2 1054.2  992.2
## 2014-01-13 1101.6 1063.9  916.3
## 2014-01-14 1027.4 1026.2 1030.2
## 2014-01-15  979.6  979.3  985.5
## 2014-01-16 1001.1  894.6  954.3
## 2014-01-17  876.8 1007.5 1018.8
## 2014-01-18 1018.7  940.7 1079.9
## 2014-01-19  975.1  946.6 1072.0
## 2014-01-20  946.9  924.3  989.6
## 2014-01-21  987.8 1091.5  981.9
## 2014-01-22 1109.9 1103.7 1011.7
## 2014-01-23 1023.0  998.9 1025.0
## 2014-01-24  957.0 1041.3  946.5
## 2014-01-25  917.7  962.4 1026.9
## 2014-01-26 1043.2  969.2 1055.1
## 2014-01-27  972.2  958.1 1004.4
## 2014-01-28 1030.1 1027.7  994.1
## 2014-01-29 1002.6 1065.0  931.3
## 2014-01-30 1012.8 1014.7 1063.3

B) group_by date (Year + Month)

grp <- data %>% index %>% format("%y-%m")

as.data.frame(coredata(data)) %>% 
    mutate(group = grp) %>% 
    group_by(group) %>% 
    summarize(
        mean_Fund_1 = mean(Fund_1),
        mean_Fund_2 = mean(Fund_2),
        mean_Fund_3 = mean(Fund_3)
    )
## # A tibble: 4 x 4
##   group mean_Fund_1 mean_Fund_2 mean_Fund_3
##   <chr>       <dbl>       <dbl>       <dbl>
## 1 13-10   1013.9556   1020.1778   1033.2111
## 2 13-11    992.0767    988.9633    985.8067
## 3 13-12   1022.1806    997.2065   1007.3839
## 4 14-01   1013.1267   1008.4300   1003.0900

lovetoken

2016-07-18