> i guess you mean columnwise cumsums computed starting from the bottom up?
yes > then this should do (given that your data is in matrix m, and years are > row labels, not data): > > rc = nrow(m) > cumsums = apply(m[rc:1,], 2, cumsum)[rc:1,] ok...work very well.. >data 1987 1.33 1.21 1.77 1.44 0.27 2.85 1988 1.86 1.06 2.33 2.14 0.55 1.40 1989 2.10 0.65 2.74 2.43 1.19 1.45 1990 1.55 0.00 1.59 1.94 0.99 2.14 1991 0.92 0.72 0.50 1.29 0.54 1.22 1992 2.15 1.28 1.23 2.26 1.22 3.17 1993 1.50 0.87 1.68 1.97 0.83 2.55 1994 0.69 0.00 0.76 1.89 0.60 0.87 1995 1.13 1.04 1.19 1.52 1.13 1.78 1996 1.15 0.92 1.50 0.97 0.60 0.00 >apply(m[rc:1,], 2, cumsum)[rc:1,] 1987 14.38 7.75 15.29 17.85 7.92 17.43 1988 13.05 6.54 13.52 16.41 7.65 14.58 1989 11.19 5.48 11.19 14.27 7.10 13.18 1990 9.09 4.83 8.45 11.84 5.91 11.73 1991 7.54 4.83 6.86 9.90 4.92 9.59 1992 6.62 4.11 6.36 8.61 4.38 8.37 1993 4.47 2.83 5.13 6.35 3.16 5.20 1994 2.97 1.96 3.45 4.38 2.33 2.65 1995 2.28 1.96 2.69 2.49 1.73 1.78 1996 1.15 0.92 1.50 0.97 0.60 0.00 Now, can move the cumsum of 1 row? For obtain a this: 1986 14.38 7.75 15.29 17.85 7.92 17.43 1987 13.05 6.54 13.52 16.41 7.65 14.58 1988 11.19 5.48 11.19 14.27 7.10 13.18 1989 9.09 4.83 8.45 11.84 5.91 11.73 1990 7.54 4.83 6.86 9.90 4.92 9.59 1991 6.62 4.11 6.36 8.61 4.38 8.37 1992 4.47 2.83 5.13 6.35 3.16 5.20 1993 2.97 1.96 3.45 4.38 2.33 2.65 1994 2.28 1.96 2.69 2.49 1.73 1.78 1995 1.15 0.92 1.50 0.97 0.60 0.00 1996 0.00 0.00 0.00 0.00 0.00 0.00 thanks... Alfredo ______________________________________________ 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.