2013-09-03 2 views
1

아래 샘플 xts 데이터에서 나는 intra-day 데이터의 작은 하위 집합을 보여줍니다.XTS 조건부 합

my.temp <- structure(c(1134.65, 45665.2, 63639.8, 262817.8, 71898.4, 128737, 
    641741.8, 6090, 7561.5, 3954.73, 15733.2, 274.88, 824.64, 1099.52, 1924.16, 
    348715, 196425, 113975, 215825, 38340, 21138, 12020, 20200, 20200, 20200, 
    20200, 20200, 20200, 23000, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 
    20200, 20200, 20200, 20200, 12020, 20000), .Dim = c(21L, 2L), 
    .Dimnames = list(NULL, c("VALUE", "USAP")), index = structure(c(1378130401, 
    1378130404, 1378130404, 1378130404, 1378130404, 1378130404, 1378130404, 
    1378130404, 1378130406, 1378130409, 1378130411, 1378130415, 1378130415, 
    1378130415, 1378130415, 1378130451, 1378130452, 1378130452, 1378130452, 
    1378130455, 1378130501), tzone = "", tclass = c("POSIXct", "POSIXt")), 
    .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct", "POSIXt"), 
    .indexTZ = "", tzone = "", class = c("xts", "zoo")) 

USAP 당 총 VALUE를 표시하려고합니다. 전체 기간 동안 결과를 표시하려면 aggregate 함수를 성공적으로 사용했습니다. 하루에 USAP 당 총계를 어떻게 표시합니까?

+0

참고. –

답변

0

여기 한 가지 방법이 있습니다. 보다 간결한 방법이있을 수 있지만, 지금 내가 생각할 수있는 최선의 방법입니다. 당신이를 통해`dput` 아니라 단지 데이터의 인쇄 된 표현을 붙여보다 개체의 구조/출력을 제공하는 경우 사람들이 도움을 위해 훨씬 쉽게 있다는

# first, split your object into groups by USAP 
temp.split <- split(my.temp, my.temp$USAP) 
# define a simple helper function 
f <- function(x) apply.daily(x, function(d) c(sum(d$VALUE),d$USAP[1])) 
# then call apply.daily on each group; 
# finally, rbind the results back together 
do.call(rbind, lapply(temp.split, f)) 
#       VALUE USAP 
# 2013-09-02 09:00:04 6090.00 23000 
# 2013-09-02 09:00:52 2089440.00 20200 
# 2013-09-02 09:00:55 70847.28 12020 
# 2013-09-02 09:01:41 21138.00 20000 
0
aggregate(VALUE ~ USAP + as.Date(index(my.temp)), data = my.temp, sum) 

    # USAP as.Date(index(my.temp))  VALUE 
    # 1 12020    2013-09-02 70847.28 
    # 2 20000    2013-09-02 21138.00 
    # 3 20200    2013-09-02 2089440.00 
    # 4 23000    2013-09-02 6090.00