[R] extract rows based on column value in a data frame
Ragia Ibrahim
ragia11 at hotmail.com
Thu Dec 3 05:54:20 CET 2015
lots of thanks
Ragia
----------------------------------------
> Date: Wed, 2 Dec 2015 14:12:46 -0800
> Subject: Re: [R] extract rows based on column value in a data frame
> From: bgunter.4567 at gmail.com
> To: dwinsemius at comcast.net
> CC: ragia11 at hotmail.com; r-help at r-project.org
>
> ...
> Perhaps also worth mentioning -- David's solution works even if there
> are less than 3 rows per group, whereas mine will fail.
>
> Cheers,
> Bert
>
>
> Bert Gunter
>
> "Data is not information. Information is not knowledge. And knowledge
> is certainly not wisdom."
> -- Clifford Stoll
>
>
> On Wed, Dec 2, 2015 at 2:10 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
>> ... or perhaps using rep() to do the indexing directly instead of matching:
>>
>> dfrm[ ave(dfrm$v1, dfrm$v1, FUN =
>> function(x)rep(c(TRUE,FALSE),c(3,length(x)-3))), ]
>>
>> There's probably another 6 dozen ways to do it, especially if you
>> access packages like data.table, plyr, etc.
>>
>> Cheers,
>> Bert
>>
>>
>> Bert Gunter
>>
>> "Data is not information. Information is not knowledge. And knowledge
>> is certainly not wisdom."
>> -- Clifford Stoll
>>
>>
>> On Wed, Dec 2, 2015 at 12:26 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>>>
>>>> On Dec 2, 2015, at 10:09 AM, Ragia Ibrahim <ragia11 at hotmail.com> wrote:
>>>>
>>>> Dear Group,
>>>> I have a data frame that such as
>>>>
>>>> v1 v2 v3 v4
>>>> 1 1 3 6
>>>> 1 1 5 6
>>>> 1 1 8 0
>>>> 1 2 6 1
>>>> 1 2 4 0
>>>> 1 3 4 4
>>>> 1 3 5 4
>>>> 1 3 6 3
>>>> 1 3 7 1
>>>>
>>>> 2 4 3 7
>>>> 2 5 5 4
>>>> 2 5 8 2
>>>> 2 1 6 1
>>>> 2 1 4 0
>>>> 2 1 4 3
>>>> 2 1 5 2
>>>> 3 1 6 1
>>>> 3 6 7 0
>>>>
>>>> 3 6 3 6
>>>> 3 6 5 6
>>>> 3 6 8 0
>>>> 3 6 6 1
>>>> 3 2 4 0
>>>> 3 2 4 4
>>>> 3 2 5 4
>>>> 3 2 6 3
>>>> 3 2 7 1
>>>> 3 5 9 5
>>>> 3 6 9 5
>>>>
>>>>
>>>> the result required is each first 3 rows, from distinct v2 column for each v1 column
>>>>
>>>>
>>>> v1 v2 v3 v4
>>>> 1 1 3 6
>>>> 1 2 6 1
>>>> 1 3 4 4
>>>> 2 4 3 7
>>>> 2 5 5 4
>>>> 2 1 6 1
>>>> 3 6 3 6
>>>> 3 2 4 0
>>>> 3 5 9 5
>>>
>>>
>>> Probably something along the lines of
>>>
>>> dfrm[ ave(dfrm$v1, dfrm$v1, FUN=seq_along) %in% 1:3 , ]
>>>
>>>
>>>>
>>>>
>>>> thanks in advance
>>>> [[alternative HTML version deleted]]
>>>
>>> Future postings should be in plain text.
>>>
>>> —
>>>
>>> David Winsemius
>>> Alameda, CA, USA
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
More information about the R-help
mailing list