Hi, On Mar 1, 2012, at 12:38 PM, Sarah Goslee wrote:
> 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)) >> < snip > >> 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 Actually that doesn't work because of those pesky missing values. You need test <- transform(test, v = ifelse(pattern == 1 & !is.na(pattern), NA, v)) Best, Ista > > > -- > 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. ______________________________________________ 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.