# [R] generating new vector based on criteria from other vectors

arun smartpink111 at yahoo.com
Sat May 11 06:45:22 CEST 2013

```Hi,

x1      x2      x3
a1     b2       2
a1     b4       4
a2     NA      3
NA     b2      6
a3      b1       NA
a1     b2       9
a1     b2       NA
a1     b4       2
dat2<- dat1
dat2\$x4<-with(dat2,ave(x3,x1,x2,FUN=function(x) mean(x,na.rm=TRUE)))
dat2
#    x1   x2 x3  x4
#1   a1   b2  2 5.5
#2   a1   b4  4 3.0
#3   a2 <NA>  3 3.0
#4 <NA>   b2  6 6.0
#5   a3   b1 NA NaN
#6   a1   b2  9 5.5
#7   a1   b2 NA 5.5
#8   a1   b4  2 3.0

A.K.

>My data contains the following x1 x2 x3 vectors and I want to create a
new vector x4 by performing calculations on x3 based on criteria from x1 and >x2. The data contains missing values.
>
>x1      x2      x3        x4
>a1     b2       2        mean(x3) when x1=a1 and x2=b2
>a1     b4       4        mean(x3) when x1=a1 and x2=b4
>a2     NA      3         NA
>NA     b2      6          NA
>a3      b1       NA      mean(x3) when x1=a3 and x2=b1
>a1     b2       9         mean(x3) when x1=a1 and x2=b2
>:          :         :
>
>
>That is I am willing to create a group mean vector and the group means will correspond to the members of that group.
>stata handles this with a "by" option. Can I create such vectors based on conditional calculations in R ?

```