Re: [R] subtotal, submean, aggregate

From: Patrick Giraudoux <patrick.giraudoux_at_univ-fcomte.fr>
Date: Mon 27 Feb 2006 - 01:52:30 EST

Yes right. Checking some examples, all come out OK.

>> same as your example but I think there are some errors in your example output.
Simply the 'errors' observed come simply from the seed in

rpois(length(habitats),2)

It is unlikely it is the same on your and my computer...

Cheers,

Patrick

Gabor Grothendieck a écrit :
> We are just comparing the difference to 0 so it does not matter if its positive
> or negative. All that matters is whether its 0 or not.
>
> In fact, the runno you calculate with the abs is identical to the one
> I posted without the abs:
>
> runno <- cumsum(c(TRUE, abs(diff(as.numeric(transect[,2])))!=0))
> runno2 <- cumsum(c(TRUE, diff(as.numeric(transect[,2])))!=0)
> identical(runno, runno2) # TRUE
>
>
> On 2/26/06, Patrick Giraudoux <patrick.giraudoux@univ-fcomte.fr> wrote:
>
>> Excellent! I was messing with this problem since the early afternoon.
>> Actually the discrepancy you noticed remaining comes from negative
>> difference in
>> diff(as.numeric(transect[,2]))
>> One can work it around using abs(diff(as.numeric(transect[,2]))). This
>> makes:
>>
>> runno <- cumsum(c(TRUE, abs(diff(as.numeric(transect[,2])))!=0))
>> aggregate(transect[,1], list(obs = transect[,2], runno = runno), sum)
>>
>> I did not know about this use of diff, which was the key point... and then
>> cumsum for polishing. Really great and also elegant (concise). I like it!
>>
>> Thanks a lot!!!
>>
>> Cheers,
>>
>> Patrick
>>
>>
>> Gabor Grothendieck a écrit :
>> Create another variable that gives the run number and aggregate on
>>
> both the
>
>> habitat and run number removing the run number after
>>
> aggregating:
>
> runno <-
>
>> cumsum(c(TRUE, diff(as.numeric(transect[,2])) !=0))
>>
> aggregate(transect[,1],
>
>> list(obs = transect[,2], runno = runno), sum)[,-2]
>>
>
> This does not give the
>
>> same as your example but I think there are some
>>
> errors in your example
>
>> output.
>>
>
> On 2/26/06, Patrick Giraudoux
>
>> <patrick.giraudoux@univ-fcomte.fr> wrote:
>>
>
>
>> Dear All,
>>
>
> I would like to make partial sums (or means or any other
>
>> function) of
>>
> the values in intervals along a sequence (spatial transect)
>
>> where groups
>>
> are defined.
>
> For
>
>> instance:
>>
>
> habitats<-rep(c("meadow","forest","meadow","pasture"),c(10,5,12,6))
> observations<-rpois(length(habitats),2)
> transect<-data.frame(observations=observations,habitats=habitats)
>
> aggregate()
>
>> is not suitable for my purpose because I want a result
>>
> respecting the order
>
>> of the habitats encountered although they may have
>>
> the same name (and not
>
>> pooling each group on each level of the factor
>>
> created). For instance, the
>
>> output of the ideal function
>>
> mynicefunction() would be something
>
>> as:
>>
>
> mynicefunction(transect$observations,
>
>> by=list(transect$habitats),sum)
>>
> meadow 16
> forest 9
> meadow 21
> pasture 17
>
> and
>
>> not
>>
>
> aggregate(transect$observations,by=list(transect$habitats),sum)
>
>> Group.1 x
>>
> 1 forest 9
> 2 meadow 37
> 3 pasture 17
>
> Did anybody hear about such a
>
>> function already written in R? If no, any
>>
> idea to make it simple and elegant
>
>> to write?
>>
>
> Cheers,
>
> Patrick
>
>> Giraudoux
>>
>
> ______________________________________________
> R-help@stat.math.ethz.ch
>
>> mailing
>> list
>>
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do
>
>> read the posting guide!
>> http://www.R-project.org/posting-guide.html
>>
>
>
>
>>
>
>

        [[alternative HTML version deleted]]



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Mon Feb 27 02:02:21 2006

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:42:45 EST