Not sure what you mean by "nice way", but here is a dplyr solution:
> library(dplyr) > mydata <- read.table(text = "subject QM emotion yi + s1 75.1017 neutral -75.928276 + s2 -47.3512 neutral -178.295990 + s3 -68.9016 neutral -134.753906 + s1 17.2099 negative -104.168312 + s2 -53.1114 negative -182.373474 + s3 -33.0322 negative -137.420410", header = TRUE) > agg <- mydata %>% + group_by(subject) %>% + summarise(QM = mean(QM), + yi = mean(yi) + ) > > > agg # A tibble: 3 x 3 subject QM yi <fctr> <dbl> <dbl> 1 s1 46.1558 -90.04829 2 s2 -50.2313 -180.33473 3 s3 -50.9669 -136.08716 Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. On Thu, Jul 28, 2016 at 4:40 PM, Gang Chen <gangch...@gmail.com> wrote: > With the following data in data.frame: > > subject QM emotion yi > s1 75.1017 neutral -75.928276 > s2 -47.3512 neutral -178.295990 > s3 -68.9016 neutral -134.753906 > s1 17.2099 negative -104.168312 > s2 -53.1114 negative -182.373474 > s3 -33.0322 negative -137.420410 > > I can obtain the average between the two emotions with > > mydata <- read.table('clipboard', header=TRUE) > aggregate(mydata[,c('yi', 'QM')], by=list(subject=mydata$subject), mean) > > My question is, what is a nice way to get the difference between the > two emotions? > > Thanks, > Gang > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.