[R] difference

P Tennant philipt900 at iinet.net.au
Fri Oct 28 11:08:50 CEST 2016


Hi,

You could use an anonymous function to operate on each `year-block' of 
your dataset, then assign the result as a new column:

d <- data.frame(year=c(rep(2001, 3), rep(2002, 3)),
                 num=c(25,75,150,30,85,95))

d$diff <- unlist(by(d$num, d$year, function(x) x - x[1]))
d

   year num diff
1 2001  25    0
2 2001  75   50
3 2001 150  125
4 2002  30    0
5 2002  85   55
6 2002  95   65


Philip

On 28/10/2016 3:20 PM, Ashta wrote:
> Hi all,
>
> I want to calculate the difference  between successive row values to
> the first row value within year.
> How do I get that?
>
>   Here is    the sample of data
> Year   Num
> 2001    25
> 2001    75
> 2001   150
> 2002    30
> 2002    85
> 2002    95
>
> Desired output
> Year   Num  diff
> 2001    25       0
> 2001    75      50
> 2001  150    125
> 2002    30        0
> 2002    85      55
> 2002    95      65
>
> Thank you.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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