Dear all, Probably a rather stupid question, but I couldn't find the answer.. I currently have a dataframe with customers' id's and purchase amount, what I would like to do is to show the difference between amount purchased compared to the month before per customer. I have made some attempts myself using diff, but what i can not get to work is that each different customer starts with a 0. This is an example of what I have:>purchase_amountcustomer amount 123 6 123 5 123 9 123 8 123 11 123 7 230 19 230 18 230 12 230 17 380 7 380 9 380 2 380 7 380 8 380 8 380 6 380 8 How I would like it to look like: customer amount difference 123 6 0 123 5 -1 123 9 4 123 8 -1 123 11 3 123 7 -4 230 19 0 230 18 -1 230 12 -6 230 17 5 380 7 0 380 9 2 380 2 -7 380 7 5 380 8 1 380 8 0 380 6 -2 380 8 2 I hope my question is clear like this. Many thanks in advance Rens -- View this message in context: http://r.789695.n4.nabble.com/Differences-per-group-tp3343800p3343800.html Sent from the R help mailing list archive at Nabble.com.
Hi Rens, One way would be x$difference <- do.call(c, with(x, tapply(amount, customer, function(x) c(0, diff(x))))) x Take a look at ?tapply and ?aggregate for more information. HTH, Jorge On Wed, Mar 9, 2011 at 10:27 AM, rens_1112 <> wrote:> Dear all, > > Probably a rather stupid question, but I couldn't find the answer.. > > I currently have a dataframe with customers' id's and purchase amount, what > I would like to do is to show the difference between amount purchased > compared to the month before per customer. > > I have made some attempts myself using diff, but what i can not get to work > is that each different customer starts with a 0. > > This is an example of what I have: > > >purchase_amount > customer amount > 123 6 > 123 5 > 123 9 > 123 8 > 123 11 > 123 7 > 230 19 > 230 18 > 230 12 > 230 17 > 380 7 > 380 9 > 380 2 > 380 7 > 380 8 > 380 8 > 380 6 > 380 8 > > How I would like it to look like: > > customer amount difference > 123 6 0 > 123 5 -1 > 123 9 4 > 123 8 -1 > 123 11 3 > 123 7 -4 > 230 19 0 > 230 18 -1 > 230 12 -6 > 230 17 5 > 380 7 0 > 380 9 2 > 380 2 -7 > 380 7 5 > 380 8 1 > 380 8 0 > 380 6 -2 > 380 8 2 > > I hope my question is clear like this. > Many thanks in advance > Rens > > -- > View this message in context: > http://r.789695.n4.nabble.com/Differences-per-group-tp3343800p3343800.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]
Hi:
Here's another approach:
purchase_amount <- transform(purchase_amount,
diff = with(purchase_amount, ave(amount, customer, FUN function(x) c(0,
diff(x)))))
purchase_amount
HTH,
Dennis
On Wed, Mar 9, 2011 at 7:27 AM, rens_1112 <tibidabo@rocketmail.com> wrote:
> Dear all,
>
> Probably a rather stupid question, but I couldn't find the answer..
>
> I currently have a dataframe with customers' id's and purchase
amount, what
> I would like to do is to show the difference between amount purchased
> compared to the month before per customer.
>
> I have made some attempts myself using diff, but what i can not get to work
> is that each different customer starts with a 0.
>
> This is an example of what I have:
>
> >purchase_amount
> customer amount
> 123 6
> 123 5
> 123 9
> 123 8
> 123 11
> 123 7
> 230 19
> 230 18
> 230 12
> 230 17
> 380 7
> 380 9
> 380 2
> 380 7
> 380 8
> 380 8
> 380 6
> 380 8
>
> How I would like it to look like:
>
> customer amount difference
> 123 6 0
> 123 5 -1
> 123 9 4
> 123 8 -1
> 123 11 3
> 123 7 -4
> 230 19 0
> 230 18 -1
> 230 12 -6
> 230 17 5
> 380 7 0
> 380 9 2
> 380 2 -7
> 380 7 5
> 380 8 1
> 380 8 0
> 380 6 -2
> 380 8 2
>
> I hope my question is clear like this.
> Many thanks in advance
> Rens
>
> --
> View this message in context:
> http://r.789695.n4.nabble.com/Differences-per-group-tp3343800p3343800.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help@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.
>
[[alternative HTML version deleted]]