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

Sarah Goslee sarah.goslee at gmail.com
Thu Mar 1 19:02:53 CET 2012


You're all correct: I copied in the wrong thing. My apologies!

On Thu, Mar 1, 2012 at 1:00 PM, Ista Zahn <istazahn at gmail.com> wrote:
> Hi,
>
> On Mar 1, 2012, at 12:38 PM, Sarah Goslee wrote:
>
>> 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))
>>>
>
> < 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
>
>>



More information about the R-help mailing list