Is this what you want: > x <- read.table(textConnection("variable YEAR VAR + EC01 2006 100 + + EC01 2007 200 + + EC02 2006 500 + + EC02 2007 450 + + PROD 2006 567 + + PROD 2007 543"), header=TRUE, as.is=TRUE) > closeAllConnections() > # split by year and then determine if there is a PROD in the year > result <- do.call(rbind, lapply(split(x, x$YEAR), function(.year){ + prod.indx <- which(.year$variable == "PROD") + if (length(prod.indx) != 1){ + cat('missing or incorrect number of PRODs for:', .year$YEAR[1L], '\n') + return(NULL) + } + prod.value <- .year$VAR[prod.indx] + # remove PROD from result + .year <- .year[-prod.indx,,drop=FALSE] + .year$VAR <- .year$VAR / prod.value + .year # return updated results + })) > result variable YEAR VAR 2006.1 EC01 2006 0.1763668 2006.3 EC02 2006 0.8818342 2007.2 EC01 2007 0.3683241 2007.4 EC02 2007 0.8287293 >
On Mon, Apr 26, 2010 at 11:07 AM, n.via...@libero.it <n.via...@libero.it>wrote: > > Dear list, > I have a big data frame which looks like this: > variable YEAR VAR > EC01 2006 100 > > EC01 2007 200 > > EC02 2006 500 > > EC02 2007 450 > > PROD 2006 567 > > PROD 2007 543 > > What I would like to do is to divide each variables by PROD,namely: > EC01(2006)/PROD(2006) > EC01(2007)/PROD(2007) > EC02(2006)/PROD(2006) > EC02(2007)/PROD(2007) > Anyone knows how to do it?? > THANKS!!! > > [[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<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? [[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.