[R] Finding a mean value of a variable holding a dummy variablefixed

Simon Blomberg s.blomberg1 at uq.edu.au
Mon Mar 31 06:01:20 CEST 2008


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: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] Im
> Auftrag von Alexander Ovodenko
> Gesendet: Sunday, March 30, 2008 9:47 PM
> An: r-help at 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 at 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 at 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.



More information about the R-help mailing list