[R] Delete rows from data.frame matching a certain criteria

Sarah Goslee sarah.goslee at gmail.com
Thu Mar 1 18:38:48 CET 2012


Hi,

On Thu, Mar 1, 2012 at 11:11 AM, mails <mails00000 at 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



More information about the R-help mailing list