[R] Function for subset of cases/lines

Richard.Cotton at hsl.gov.uk Richard.Cotton at hsl.gov.uk
Thu May 15 10:54:36 CEST 2008


> I have a vector:
> 
> q1<-c(4660,5621,5629,8030,8080,8180,8501,8190,8370,8200)
> 
> The following command gives me the mean of its elements:
> 
> mean(q1)
> [1] 7346.1
> 
> What can I do to do the same for the variable 'height', but only for the 

> cases/rows which have one of the elements of q1 as 'number':
> 
>    number height
> 1 4660   2.5
> 2 5010   1.4
> 3 5621   0.8
> 4 5629   2.3
> 5 8030   2.5
> 6 8080   2.4
> 7 8090   0.9
> 8 8180   1.4
> 9 8501   1.2
> 10 8190   1.9
> 11 8200   2.0
> 12 8370   2.1
> 13 8200   1.8

This will do the trick:
mean(df$height[df$number %in% q1])

Or, if you want the mean of those elements which aren't in q1 as well, 
try:
tapply(df$height, df$number %in% q1, mean) 

(Both assume that you've named the data frame 'df'.)

Regards,
Richie.

Mathematical Sciences Unit
HSL


------------------------------------------------------------------------
ATTENTION:

This message contains privileged and confidential inform...{{dropped:20}}



More information about the R-help mailing list