I could do this in various hacky ways, but what's the right way?

I have a nice application of the by function, which does what I want.  The 
output looks like this:

> auc_stress
lab.samples.stress$subid: 2
  cortisol amylase
1   919.05  6834.8
---------------------------------------------------------------------------------------------------------------------------
 
lab.samples.stress$subid: 3
   cortisol  amylase
11   728.25 24422.05

etc.

What I want is a data frame roughly like this:

subid  cortisol.auc  amylase.auc
2      919.05        6834.8
3      728.25        24422.05

etc.

What is a nice way to make that happen?



Here is the code and data that I am using, which should run directly if you 
copy and paste it:


sanity.check<-read.csv("http://brainimaging.waisman.wisc.edu/~perlman/testdata.csv";,
 header=TRUE, sep = ",")
lab.samples <- subset(sanity.check,Sample!='before bed' & Sample!='morning 
after')
lab.samples$Sample<-factor(lab.samples$Sample)
lab.samples.stress<-subset(lab.samples,challenge=='stress')
lab.samples.control<-subset(lab.samples,challenge=='control')

auc_ground <- function(sub_df) {
        print(sub_df)
        auc<-sub_df[1,]*0
        timedif<-c(60,10,10,10,10,10,10)
        for (i in 1:(nrow(sub_df)-1) ) {
                print(c(i,i+1))
                #print(c(values[i],values[i+1]))
                pair_area<-(sub_df[i,]+sub_df[i+1,])*timedif[i]/2
                auc<-auc+pair_area
        }
        auc
}

auc_stress<-by(lab.samples.stress[c('cortisol','amylase')], 
lab.samples.stress$subid, auc_ground, simplify=T)
auc_control<-by(lab.samples.control[c('cortisol','amylase')], 
lab.samples.control$subid, auc_ground, simplify=T)


Thanks for your help!

P.S. sorry if this question has been answered before, it is nearly impossible 
to get useful google results on search terms like "by"...  too common word...


-dave----------------------------------------------------------------------
A neuroscientist is at the video arcade, when someone makes him a $1000 bet
on Pac-Man. He smiles, gets out his screwdriver and takes apart the Pac-Man
game. Everyone says "What are you doing?" The neuroscientist says "Well,
since we all know that Pac-Man is based on electric signals traveling
through these circuits, obviously I can understand it better than the other
guy by going straight to the source!"

______________________________________________
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.

Reply via email to