[R] new R-user needs help
(Ted Harding)
Ted.Harding at nessie.mcc.ac.uk
Wed Oct 18 13:17:24 CEST 2006
On 18-Oct-06 antoniababe at yahoo.se wrote:
> Dear all,
>
> I have a dataset
>
> Exp name id x1 x2 x3 x4 x5
> 1 a 1 23 24 23 22 30
> 1 b 2 25 26 27 23 24
> 1 c 3 32 19 23 25 28
> 2 a 4 28 32 24 26 27
> 2 b 5 23 24 25 26 28
> 2 c 6 23 31 30 38 23
> 3 a 7 24 25 31 27 29
> 3 b 8 28 25 26 32 28
> 3 c 9 21 31 28 23 29
>
> where each name a,b and c is repeated three times.
> Now I want to calculate the the averages of a,b and c
> over the three experiments for each x. For example for
> x1 I want to calculate the average of a like
>
> [a(from exp1) + a(exp2)+ a(exp3)]/3= (23+28+24)/3
>
> How can I do that ?
The solution given by Dimitris may seem mysterious fo
a "new R-user". More transparent is the following kind
of thing.
Suppose (as in Dimitris' solution) your data are in a
dataframe called "dat".
Then, for example,
mean(dat$x1[dat$name=="a"])
[1] 25
which selects the values of x1 for which the name is "a".
You can similarly cycle through all the variables x1,...,x5:
for(i in (4:8)){print(mean(dat[(name=="a"),i]))}
[1] 25
[1] 27
[1] 26
[1] 25
[1] 28.66667
where dat[(name=="a"),i] selects rows of 'dat' according to
the value of 'name' and columns according to values of i
(x1: i=4, ... ,x5: i=8).
This more direct and transparent way of defining access to
different elements of the dataframe makes it much easier
to carry out different kinds of calculation.
Hoping this helps,
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 18-Oct-06 Time: 12:17:20
------------------------------ XFMail ------------------------------
More information about the R-help
mailing list