Dimitris:  Thank you for the suggestion but I get an error just as when I 
did similar commands using by(), The error given is 
Error in "$<-.data.frame"(`*tmp*`, "LAGDBC", value = 
tapply(csss3lagm81$DBC,  : 
        replacement has 1089 rows, data has 8314

So I'm not sure what the problem is - why does the transformed tmp only 
have 1089 rows instead of 8314 like the full data frame?

Brian

Brian S. Cade

U. S. Geological Survey
Fort Collins Science Center
2150 Centre Ave., Bldg. C
Fort Collins, CO  80526-8818

email:  [EMAIL PROTECTED]
tel:  970 226-9326



"Dimitris Rizopoulos" <[EMAIL PROTECTED]> 
10/13/2005 10:04 AM

To
"Brian S Cade" <[EMAIL PROTECTED]>
cc

Subject
Re: [R] subsetting with by() or other function??






I think this should be something like:

dat$LAG1DBC <- tapply(dat$DBC, dat$LOCID, function(x) c(NA, 
x[-length(x)]))

I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://www.med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Brian S Cade" <[EMAIL PROTECTED]>
To: "Florence Combes" <[EMAIL PROTECTED]>; <r-help@stat.math.ethz.ch>
Sent: Thursday, October 13, 2005 5:48 PM
Subject: Re: [R] subsetting with by() or other function??


> Fair enough.  To clarify what I'm trying to achieve I've pasted 
> below a
> small piece of the larger data frame with the hierarchical structure 
> of
> factors POPULATION and LOCID and the ascending order of YEARS and 
> the
> variable DBC that I would like to transform to another variable that 
> is a
> lag of the previous years DBC (call it LAG1DBC) within LOCID within
> POPULATION.  The desired outcome is shown in the second example data 
> set
> pasted below the first.  The setup is desired for doing some 1st 
> order
> autoregressive analyses (not in the time series library).  Any 
> examples
> I've tried doing using by() only seem to work for outputing results 
> not
> creating new variables in an existing data frame.  I suspect that 
> people
> do similar types of hierarchical subgroup data manipulations all the 
> time
> in R (I know how to do these easily in SYSTAT), so I'm sure I'm 
> missing
> some obvious, simple trick.  My search of the R newslist archives 
> and
> various other R documentation has not yielded any solutions yet.
> Suggestions are graciously welcomed.
>
>       LOCID  POPULATION  YEAR        DBC
> 1      algb-1           A 1992 0.70451575
> 2      algb-1           A 1993 0.59506851
> 3      algb-1           A 1997 0.84837544
> 4      algb-1           A 1998 0.50283182
> 5      algb-1           A 2000 0.91242707
> 6      algb-2           A 1992 0.09747155
> 7      algb-2           A 1993 0.84772253
> 8      algb-2           A 1997 0.43974081
> 9      algb-2           A 1998 0.83108544
> 10     algb-2           A 2000 0.22291192
> 11     algb-3           A 1992 0.44234175
> 12     algb-3           A 1993 0.54089534
> 5680 taylr-73           B 2001 0.43918082
> 5681 taylr-73           B 2002 0.34694427
> 5682 taylr-73           B 2003 3.35619190
> 5683 taylr-73           B 2004 0.71575815
> 5684 taylr-73           B 2005 0.42038506
> 5685 taylr-74           B 1992 3.88410354
> 5686 taylr-74           B 1993 3.32472557
> 5687 taylr-74           B 1994 3.29861501
> 5688 taylr-74           B 1996 0.48153827
> 5689 taylr-74           B 1997 3.63570636
> 5690 taylr-74           B 1998 1.94630194
>
>       LOCID  POPULATION  YEAR        DBC
> 1      algb-1           A 1992 0.70451575       NA
> 2      algb-1           A 1993 0.59506851 0.70451575
> 3      algb-1           A 1997 0.84837544       0.59506851
> 4      algb-1           A 1998 0.50283182 0.84837544
> 5      algb-1           A 2000 0.91242707       0.50283182
> 6      algb-2           A 1992 0.09747155       NA
> 7      algb-2           A 1993 0.84772253 0.09747155
> 8      algb-2           A 1997 0.43974081       0.84772253
> 9      algb-2           A 1998 0.83108544       0.43974081
> 10     algb-2           A 2000 0.22291192       0.83108544
> 11     algb-3           A 1992 0.44234175       NA
> 12     algb-3           A 1993 0.54089534       0.44234175
> 5680 taylr-73           B 2001 0.43918082       NA
> 5681 taylr-73           B 2002 0.34694427       0.43918082
> 5682 taylr-73           B 2003 3.35619190       0.34694427
> 5683 taylr-73           B 2004 0.71575815       3.35619190
> 5684 taylr-73           B 2005 0.42038506       0.71575815
> 5685 taylr-74           B 1992 3.88410354       NA
> 5686 taylr-74           B 1993 3.32472557       3.88410354
> 5687 taylr-74           B 1994 3.29861501       3.32472557
> 5688 taylr-74           B 1996 0.48153827       3.29861501
> 5689 taylr-74           B 1997 3.63570636       0.48153827
> 5690 taylr-74           B 1998 1.94630194       3.63570636
>
> Brian
>
>
>
> Brian S. Cade
>
> U. S. Geological Survey
> Fort Collins Science Center
> 2150 Centre Ave., Bldg. C
> Fort Collins, CO  80526-8818
>
> email:  [EMAIL PROTECTED]
> tel:  970 226-9326
>
>
>
> Florence Combes <[EMAIL PROTECTED]>
> 10/13/2005 05:34 AM
>
> To
> Brian S Cade <[EMAIL PROTECTED]>
> cc
>
> Subject
> Re: [R] subsetting with by() or other function??
>
>
>
>
>
>
> maybe an example of the data you have and the data you want could be
> helpful for the people of the list to understand, and so to be able 
> to
> help you ?
>
> best regards,
>
> Florence.
>
>
>
> On 10/12/05, Brian S Cade <[EMAIL PROTECTED]> wrote:
> I think I must be missing something obvious, but I'm having trouble
> getting a data transformation to work on groupings of data within a 
> data
> frame (csss3) as defined by 2 factors (population, locid).  The data 
> are
> sorted by year within locid within population and I want to lag 
> another
> variable (dbc), i.e, shift them down by 1 row replacing the first 
> row with
> NA, within groups defined by locid nested within population.  I 
> thought I
> could do something using by(csss3,list(locid, population), function) 
> but
> don't seem to be having any success.  Any suggestions??
>
> Brian
>
> Brian S. Cade
>
> U. S. Geological Survey
> Fort Collins Science Center
> 2150 Centre Ave., Bldg. C
> Fort Collins, CO  80526-8818
>
> email:  [EMAIL PROTECTED]
> tel:  970 226-9326
>        [[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
>
>
> [[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
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm


        [[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

Reply via email to