How about this? :-) president <- c("Johnson", "Johnson", "Johnson"," Johnson"," Johnson", "Johnson","Nixon", "Nixon", "Nixon", "Nixon", "Nixon", "Nixon") approval <- c(3,4,5,6,7,8,6,5,4,3,2,1)
fn <- function (x) c(first=x[1], last=x[length(x)], mean=mean(x)) lst <- tapply(approval, president, fn) # Or if you need a data.frame: res <- data.frame(matrix(unlist(lst), byrow=TRUE, dimnames=list(names(lst), names(lst[[1]])), ncol=3)) Cheers, Simon. On Sun, 2008-03-30 at 23:21 -0400, Daniel Malter wrote: > I found a solution. It's probably not the easiest one, but it works. It > assumes that your data frame is ordered from earliest to latest record for > each president, but it can be easily adjusted if you want to make it > dependent on a third column. The final vector "index" gives you the line > indices for the first record for each president. If you replace "min" by > "max" you get the last instead of the first record. You can then find the > values by > > > ##Sample data > > president=c("Johnson","Johnson","Johnson","Johnson","Johnson","Johnson","Nix > on","Nixon","Nixon","Nixon","Nixon","Nixon") > approval=c(3,4,5,6,7,8,6,5,4,3,2,1) > tapply(approval,president,mean) > > ##Find index for first row of each president; assumes ascending order of > observations; change "min" to "max" to find last record > > index=NULL > for(i in 1:length(unique(president))) > index[i]=min(which((president==unique(president)[i])==TRUE)) > > index > > ##Generate table with first approvals > > first.approval=data.frame(cbind(index,president[index],approval[index])) > names(first.approval)=c("Index","President","Approval") > first.approval > > Cheers, > Daniel > > > > > ------------------------- > cuncta stricte discussurus > ------------------------- > > -----Ursprüngliche Nachricht----- > Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im > Auftrag von Alexander Ovodenko > Gesendet: Sunday, March 30, 2008 9:47 PM > An: r-help@r-project.org > Betreff: [R] Finding a mean value of a variable holding a dummy > variablefixed > > I have time-series data on approval ratings of British Prime Ministers. The > prime ministers dating from MacMillan onward till today are coded as dummy > variables and the approval ratings are entered for each month. I want to > know the mean value of the approval rating of each Prime Minister in the > dataset and the approval rating during his/her first month and last month as > PM. What R code should I enter for these data? In other words, I want hold > the dummy corresponding to each Prime Minister fixed at value one and know > the first rating that PM has, the last rating s/he has, and the mean rating > s/he has. 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 > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > 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. -- Simon Blomberg, BSc (Hons), PhD, MAppStat. Lecturer and Consultant Statistician Faculty of Biological and Chemical Sciences The University of Queensland St. Lucia Queensland 4072 Australia Room 320 Goddard Building (8) T: +61 7 3365 2506 http://www.uq.edu.au/~uqsblomb email: S.Blomberg1_at_uq.edu.au Policies: 1. I will NOT analyse your data for you. 2. Your deadline is your problem. The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data. - John Tukey. ______________________________________________ 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.