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]]
Reasonably Related Threads
- Users appears as SID instead of their own name.
- Urgent problem: Dovecot fetches the same mails multiple times per POP
- How to create Debian packages for release 3.9.0
- Using while statements to insert rows in a dataframe
- replace repeated id in a pedigree list