try this: > x <- read.table(textConnection("Year SpA + 2000 0 + 2000 2 + 2000 1 + 2001 8 + 2001 2 + 2001 0 + 2001 0 + 2002 1 + 2002 2"), header=TRUE) > closeAllConnections() > # convoluted if you want a 'function' for each year > l.func <- list('2000'=function(x) x / 146, + '2001'=function(x) x / 237, + '2002'=function(x) x/ 42) > # split the data.frame and process > result <- lapply(split(x, x$Year), function(.yr){ + # call function based on year + cbind(.yr, func=l.func[[as.character(.yr$Year[1])]](.yr$SpA)) + }) > do.call(rbind, result) Year SpA func 2000.1 2000 0 0.000000000 2000.2 2000 2 0.013698630 2000.3 2000 1 0.006849315 2001.4 2001 8 0.033755274 2001.5 2001 2 0.008438819 2001.6 2001 0 0.000000000 2001.7 2001 0 0.000000000 2002.8 2002 1 0.023809524 2002.9 2002 2 0.047619048 > > # a more reasonable way > l.div <- c('2000'=146, '2001'=237, '2002'=42) > x$div <- x$SpA / l.div[as.character(x$Year)] > x Year SpA div 1 2000 0 0.000000000 2 2000 2 0.013698630 3 2000 1 0.006849315 4 2001 8 0.033755274 5 2001 2 0.008438819 6 2001 0 0.000000000 7 2001 0 0.000000000 8 2002 1 0.023809524 9 2002 2 0.047619048 >
On Thu, Nov 5, 2009 at 1:30 PM, Lanna Jin <lanna...@gmail.com> wrote: > Hey all, > > I feel like the solution to this problem should be relatively simple, but > for some reason I can't find answers or come up with my own solution. > > Given the dataframe: > (SpA and SpB not important, want to look at distribution of cooccurance for > each year) > > Year SpA SpB Coocc > 2000 0 > 2000 2 > 2000 1 > 2001 8 > 2001 2 > 2001 0 > 2001 0 > 2002 1 > 2002 2 > > How can I apply different functions to the Coocc of each year? > (Note: Different lengths for each year, ie, > length(Year==2000)!=length(Year==2001)) > For example, if Year==2000, function(x) x/146; if Year=2001, function(x) > x/237; etc. > > I've figured out the long convoluted way, but since I plan to operate > numerous transformations on the different years, is there some way to solve > this in just a few steps? > > Thanks for your answer in advance! > > > Lanna > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.