[R] basic problem but can't solve it
Gavin Simpson
gavin.simpson at ucl.ac.uk
Tue May 22 19:21:24 CEST 2007
On Tue, 2007-05-22 at 19:01 +0200, Benoit Chemineau wrote:
> Hello,
> I have a basic problem but i can't figure it out with the
> table underneath. I would like to compute monthly averages.
> I would like to have the average measure for month #5 for the first
> three rows (the same number in the first three lines) and the average
> measure for month #6 for the last four rows ((the same number in the first
> three lines) in a separate vesctor (let's call it 'result')
> I tried to use a "while" statement inside a "for" loop but it doesn't
> seem to work.
> Can someone please help me with this ?
>
> Measure Month
> 2.28 5
> 14.04 5
> 0.60 5
> 0.21 6
> 0.96 6
> 0.75 6
> 1.28 6
If dat is a data frame containing your data:
> dat
Measure Month
1 2.28 5
2 14.04 5
3 0.60 5
4 0.21 6
5 0.96 6
6 0.75 6
7 1.28 6
> aggregate(dat$Measure, by = list(Month = dat$Month), mean)
Month x
1 5 5.64
2 6 0.80
> tapply(dat$Measure, dat$Month, mean)
5 6
5.64 0.80
see ?aggregate and ?tapply for two solutions. The tapply one seems
cleaner and easier to get the vector you need, the aggregate version
needs an extra step:
aggregate(dat$Measure, by = list(Month = dat$Month), mean)$x
^^
Note the $x at the end to subset the object returned by aggregate
HTH
G
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson [t] +44 (0)20 7679 0522
ECRC, UCL Geography, [f] +44 (0)20 7679 0565
Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/
UK. WC1E 6BT. [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
More information about the R-help
mailing list