Dear R Users,
I have the following data frame:

v1 <- c(rep(10,3),rep(11,2))
v2 <- sample(5:10, 5, replace = T)
v3 <- c(0,1,2,0,2)
df <- data.frame(v1,v2,v3)
> df
  v1 v2 v3
1 10  9  0
2 10  5  1
3 10  6  2
4 11  7  0
5 11  5  2

I want to add a new column v4 such that its values are equal to the value
of v2 conditional on v3=0 for each subgroup of v1. In the above example,
the final result should be like

df$v4 <- c(9,9,9,7,7)
> df
  v1 v2 v3 v4
1 10  9  0  9
2 10  5  1  9
3 10  6  2  9
4 11  7  0  7
5 11  5  2  7


I tried the following commands without success.

df$v4 <- ave(df$v2, df$v1, FUN=function(x) x[df$v3==0])
tapply(df$v2, df$v1, FUN=function(x) x[df$v3==0])
by(df$v2, df$v1, FUN=function(x) x[df$v3==0])

Any help? Thanks in advance!
Ozan

        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to