[R] (newbie) sum for certain number of rows

Gabor Grothendieck ggrothendieck at gmail.com
Wed Jul 15 12:46:29 CEST 2009


In the zoo package, rollapply can do that.

> library(zoo)
> out <- rollapply(ts(dat), width = 3, by = 3, sum)
> out
Time Series:
Start = 3
End = 9
Frequency = 0.333333333333333
  V1 V2 V3 V4 V5 V6 V7 V8
3  1  0  1  1  1  1  1  1
6  1  1  1  1  0  0  1  1
9  2  3  2  3  3  2  3  2

This gives a "ts" class time series result so if you need a
data frame result just convert it back:
   out <- as.data.frame(out)

See ?rollapply for more.


On Wed, Jul 15, 2009 at 6:03 AM, kelvin lau<kelvinlhk at yahoo.com> wrote:
>
> I have following data in a data.csv file separated by space
>
> 0 0 1 0 0 1 0 1
> 0 0 0 0 0 0 0 0
> 1 0 0 1 1 0 1 0
> 0 0 1 1 0 0 0 0
> 1 1 0 0 0 0 1 1
> 0 0 0 0 0 0 0 0
> 0 1 0 1 1 0 1 0
> 1 1 1 1 1 1 1 1
> 1 1 1 1 1 1 1 1
> etc...
>
> I wish to calculate the sum of each column for certain number of rows. For example if I want sum of the data after each 3 rows, it should display
> 1 0 1 1 1 1 1 1
> 1 1 1 1 0 0 1 1
> 2 3 2 3 3 2 3 2
>
> So far, this is what I have done
> xx<-read.table("data.csv",header=FALSE)
> ss<-t(apply(xx,2,sum)) # which displayed the sum of all rows
>
> I tried my best to look for solution on the Internet but so far haven't managed to find it. I am extremely grateful if someone can point me how to go about it. Thanks.
>
> Kelvin
>
> ______________________________________________
> R-help at 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.
>




More information about the R-help mailing list