On Feb 7, 2010, at 1:57 PM, James Rome wrote:

On 2/7/2010 1:35 PM, David Winsemius wrote:But to answer your question:

apply(d, 1, function(z) aggregate(z, by=list(s), FUN=sum) )

David,

That works, but I do not understand why I could not use aggregate
directly. And the answer comes out as a list, which thus far baffles me.

It comes out as a data.frame, ... just as promised in the help page.

How do I get the answer as a matrix in my original code, which I
modified to use apply?

You could coerce either maxrdf or the aggregate returns to a matrix with as.matrix or data.matrix.


ha = matrix(nrow=7, ncol=24)
colnames(ha) = as.character(c(0:23))
rownames(ha) = rownames(maxrdf)
for(j in 1:7) {
   x = apply(maxrdf[j,], 1, function(z) aggregate(z, by=list(s),
FUN=sum) )
   ha[j,] = x[[1]][2]
}

Unfortunately, ha gets converted into a list, and then I can't use it
for my plots. And you can probably educate me on how to get what I am
aiming for (a matrix with the rows as the days, the columns as the
hours, and the content as the hourly sum of the 15-minute chunks)
without using the above for loop.

apply( data.matrix(maxrdf), 1  # loops over the rows
      function(z) aggregate(z, by=s, sum)
      )
#Gives you a bunch of dataframes produced by the serial application of aggregate.

sapply(apply(maxrdf, 1, function(z) aggregate(z, by=list(s), sum) ), '[', 2)

#Gives you a list of vectors by day...almost what you wanted ...
# the ' "[", 2' part is the extraction of the second column of the dataframe

# And what I think you were asking for:

do.call(rbind,
   sapply(apply(maxrdf, 1,
      function(z) aggregate(z, by=list(s), sum) ), '[', 2) )

# ... as a matrix with named rows
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] Sunday.x 1 0 0 0 2 0 0 0 15 0 6 5 30 24 3 1 8 Monday.x 4 1 2 0 3 0 0 12 21 26 21 31 25 1 0 0 13 Tuesday.x 1 4 2 1 8 22 23 34 26 22 17 23 37 13 32 0 15 Wednesday.x 7 4 2 1 11 24 27 39 19 20 8 20 24 1 20 12 7 Thursday.x 0 0 1 0 0 13 22 0 16 17 13 7 0 13 39 30 31 Friday.x 6 3 7 0 9 0 18 25 19 22 10 27 25 5 1 0 9 Saturday.x 7 3 1 1 8 20 31 41 23 19 17 26 0 1 1 1 11
            [,18] [,19] [,20] [,21] [,22] [,23] [,24]
Sunday.x       39    37    28    21    20     1    11
Monday.x       35     7     0    28     6     5     0
Tuesday.x      37    37    37    27    23    22    15
Wednesday.x    18    13    28    30    18     0     0
Thursday.x     34    37    35    29    31    19    17
Friday.x       28    32    36    32    29    20    20
Saturday.x     30    32    32     7     0     0     0



Thanks for the help,
Jim

David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to