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.