[R] data frame
Sarah Goslee
sarah.goslee at gmail.com
Thu Jun 17 12:32:23 CEST 2010
You've posted this repeatedly, and yet received no answer. Perhaps
that is because you haven't read the posting guide! You didn't
provide a reproducible example, you didn't tell us where ddply came
from, you didn't tell us what was wrong with the code you suggested.
It would also be rather easier to help you if you put your statement
of requirements in R syntax form. In your example the results column
suddenly switched from R_pivot to series - which do you want?
In the meantime, what's wrong with simply:
x[x$YEAR == 2006, "R_pivot"] <- x[x$YEAR == 2007, "R_pivot"] -
x[x$YEAR == 2007, "Delta"]
x[x$YEAR == 2005, "R_pivot"] <- x[x$YEAR == 2006, "R_pivot"] -
x[x$YEAR == 2006, "Delta"]
It works on your sample dataframe, and would work on a larger frame sorted
in the same way.
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
Sarah
On Thu, Jun 17, 2010 at 3:04 AM, n.vialma at libero.it <n.vialma at libero.it> wrote:
>
> Dear list,
> I have the following problem. I have a data frame like this
>
>
>
> CLUSTER YEAR variable Delta R_pivot
>
> M1 2005 EC01 NA NA
>
> M1 2006 EC01 2 NA
>
> M1 2007 EC01 4 5
>
> M2 2005 EC01 NA NA
>
> M2 2006 EC01 5 NA
>
> M2 2007 EC01 8 7
>
> M1 2005 EC02 NA NA
>
> M1 2006 EC02 3 NA
>
> M1 2007 EC02 1 8
>
> M2 2005 EC02 NA NA
>
> M2 2006 EC02 9 NA
>
> M2 2007 EC02 6 10
>
>
>
>
> I'm trying to build the time series of the variables by applying the following formulas in a recursive way(by starting from the value of R_pivot at time 2007)
>
> R_EC01(2006)=R_EC01(2007)-Delta_EC01(2007)
>
> R_EC01(2005)=R_EC01(2006)-Delta_EC01(2006)
> In terms of number I would have:
> R_EC01(2006)=5-4=1
> R_eco1(2005)=1-2=-1
>
> And the same should be done for variable EC02. In addition, this calculations should be down grouping by variable e cluster..so the result should be
> CLUSTER YEAR variable series
>
> M1 2005 EC01 -1
>
>
> M1 2006 EC01 1
>
>
> M1 2007 EC01 5
>
>
> M2 2005 EC01 -6
>
>
>
> M2 2006 EC01 -1
>
> M2 2007 EC01 7
>
>
>
> M1 2005 EC02 4
>
> M1 2006 EC02 7
>
>
> M1 2007 EC02 8
>
>
> M2 2005 EC02 -5
>
>
> M2 2006 EC02 4
>
>
> M2 2007 EC02 10
> I applied the following formula which gives me a partial good result but not at all:
> series=ddply(x,.(variable,CLUSTER),transform,series=rev(c(R_pivot,rev(R_pivot-cumsum(rev(Delta[-1]))))))
> Thanks for your attention!!!
>
>
--
Sarah Goslee
http://www.functionaldiversity.org
More information about the R-help
mailing list