[R] Grouping and/or splitting
Berend Hasselman
bhh at xs4all.nl
Wed Apr 4 08:40:26 CEST 2012
On 04-04-2012, at 07:15, Ashish Agarwal wrote:
> Yes. I was missing the DROP argument.
> But now the problem is splitting is causing some weird ordering of groups.
Why weird?
> See below:
>
> DF <- read.table(text="
> Houseid,Personid,Tripid,taz
> 1,1,1,4
> 1,1,2,7
> 2,1,1,96
> 2,1,2,4
> 2,1,3,2
> 2,2,1,58
> 3,1,5,7
> ", header=TRUE, sep=",")
> aa <- split(DF, DF[, 1:2], drop=TRUE)
>
> Now the result is aa[3] should is (3,1) and not (2,2). Why? How can I
> preserve the ascending order?
>
Try this
aa[order(names(aa))]
Berend
>> aa[3]
> $`3.1`
> Houseid Personid Tripid taz
> 7 3 1 5 7
>> aa[4]
> $`2.2`
> Houseid Personid Tripid taz
> 6 2 2 1 58
>
>
> On Wed, Apr 4, 2012 at 6:29 AM, Rui Barradas <rui1174 at sapo.pt> wrote:
>
>> Hello,
>>
>>
>> Ashish Agarwal wrote
>>>
>>> I have a dataframe imported from csv file below:
>>>
>>> Houseid,Personid,Tripid,taz
>>> 1,1,1,4
>>> 1,1,2,7
>>> 2,1,1,96
>>> 2,1,2,4
>>> 2,1,3,2
>>> 2,2,1,58
>>>
>>> There are three groups identified based on the combination of first and
>>> second columns. How do I split this data frame?
>>>
>>> I tried
>>> aa <- split(inpfil, inpfil[,1:2])
>>> but it has problems.
>>>
>>> Output desired is
>>>
>>> aa[1]
>>> Houseid,Personid,Tripid,taz
>>> 1,1,1,4
>>> 1,1,2,7
>>> aa[2]
>>> Houseid,Personid,Tripid,taz
>>> 2,1,1,96
>>> 2,1,2,4
>>> 2,1,3,2
>>> aa[3]
>>> Houseid,Personid,Tripid,taz
>>> 2,2,1,58
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help@ mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>> Any of the following three works with me.
>>
>>
>> DF <- read.table(text="
>> Houseid,Personid,Tripid,taz
>> 1,1,1,4
>> 1,1,2,7
>> 2,1,1,96
>> 2,1,2,4
>> 2,1,3,2
>> 2,2,1,58
>> ", header=TRUE, sep=",")
>>
>> DF
>>
>> split(DF, DF[, 1:2], drop=TRUE)
>> split(DF, list(DF$Houseid, DF$Personid), drop=TRUE)
>> with(DF, split(DF, list(Houseid, Personid), drop=TRUE))
>>
>> The argument 'drop' defaults to FALSE. Was that the problem?
>>
>> Hope this helps,
>>
>> Rui Barrada
>
> [[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.
More information about the R-help
mailing list