[R] sort a data frame by a vector
David Winsemius
dwinsemius at comcast.net
Wed Dec 2 05:09:28 CET 2009
On Dec 1, 2009, at 10:59 PM, jim holtman wrote:
> The factor statement should have been: (missed the 'vec' on the
> first reading)
>
> dataDF$A1 <- factor(dataDF$A1, levels=vec)
It's not necessary to alter the data.frame. You can use the results of
the construction above as the row index and still keep the original
order:
> dataDF[factor(dataDF$A1, levels=vec), ]
A1 A2
3 C 3
2 A 2
1 B 1
> dataDF
A1 A2
1 B 1
2 A 2
3 C 3
--
David.
>
> On Tue, Dec 1, 2009 at 10:57 PM, jim holtman <jholtman at gmail.com>
> wrote:
>> Is this what you want:
>>
>>> dataDF = data.frame(A1 = c("B", "A", "C"), A2 = c(1,2,3))
>>> dataDF
>> A1 A2
>> 1 B 1
>> 2 A 2
>> 3 C 3
>>> dataDF[order(dataDF$A1),]
>> A1 A2
>> 2 A 2
>> 1 B 1
>> 3 C 3
>>>
>>
>> If you want the sequence "CAB" then you will have to change the
>> factors in column 1:
>>
>>> dataDF$A1 <- factor(dataDF$A1, levels=c("C", "A", "B"))
>>> dataDF[order(dataDF$A1),]
>> A1 A2
>> 3 C 3
>> 2 A 2
>> 1 B 1
>>>
>>
>>
>> On Tue, Dec 1, 2009 at 10:36 PM, Hao Cen <hcen at andrew.cmu.edu> wrote:
>>> Hi,
>>>
>>>
>>>
>>> I have a a vector and a data frame with two columns
>>>
>>> vec = c("C", "A", "B")
>>>
>>> dataDF = data.frame(A1 = c("B", "A", "C"), A2 = c(1,2,3))
>>>
>>>
>>>
>>> I would like to sort the data frame by column A1 such that the
>>> order of
>>> elements in A1 is as the same as in vec.
>>>
>>>
>>>
>>> After the ordering, the data frame would be
>>>
>>> A1 A2
>>>
>>> C 3
>>>
>>> A 2
>>>
>>> B 1
>>>
>>>
>>>
>>> Any suggestions would be appreciated.
>>>
>>>
>>>
>>> Thanks in advance
>>>
>>>
>>>
>>> Jeff
>>>
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at 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.
>>>
>>
>>
>>
>> --
>> Jim Holtman
>> Cincinnati, OH
>> +1 513 646 9390
>>
>> What is the problem that you are trying to solve?
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
> ______________________________________________
> R-help at 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.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
More information about the R-help
mailing list