[R] Delete rows from data.frame matching a certain criteria
David Winsemius
dwinsemius at comcast.net
Thu Mar 1 19:13:30 CET 2012
On Mar 1, 2012, at 1:02 PM, Sarah Goslee wrote:
> 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))
What about just using `is.na<-`:
is.na(test$v) <- test$pattern==1
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list