Hi, On Thu, Mar 1, 2012 at 11:11 AM, mails <mails00...@gmail.com> wrote: > Hello, > > > consider the following data.frame: > > test <- data.frame(n = c(1,2,3,4,5), v = c(6,5,7,5,3), pattern = > c(1,1,NA,1,NA)) > >> test > n v pattern > 1 1 6 1 > 2 2 5 1 > 3 3 7 NA > 4 4 5 1 > 5 5 3 NA >
Thanks for the reproducible example. > I tried to use apply and the adply function to set v to NA where pattern = 1 > and v to v where pattern = 1 Presumably that should be set v to NA where pattern == 1 and v to v where pattern != 1 > > So basically the result should look like this: >> test > n v pattern > 1 1 NA 1 > 2 2 NA 1 > 3 3 7 NA > 4 4 NA 1 > 5 5 3 NA > So far, I solved it by creating subsets and using merge but it turns out to > be super slow. Is there a way to do that > with the apply function? Far too much work. What about: > test$v <- ifelse(test$pattern == 1, NA, v) > test n v pattern 1 1 NA 1 2 2 NA 1 3 3 NA NA 4 4 NA 1 5 5 NA NA -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.