[R] tapply problem

Petr Pikal petr.pikal at precheza.cz
Thu Oct 18 11:40:07 CEST 2001


On 18 Oct 2001 at 16:21, Robin Hankin wrote:

> Hello everybody.
> 
> I have a question that has stumped me and the usual "apply" 
tricks
> don't seem to work.  I run a course where each student's 
performance
> is marked by one or more assessors. 
> 
> I have a data frame containing students' names, assessors' names 
and
> their marks, arranged as follows:
> 
> 
>         ID       student   assessor  Q1A  Q1B  Q1C  Q2A  Q2B  
Q3
> 1  2152833    Fred.Smith      Robin 15.0 17.0 13.0 14.0 13.0  
8.0 2 
> 2152833    Fred.Smith      Steph 14.0 13.0 11.0 16.0 13.0  8.0 3 
> 2152833    Fred.Smith      Julie 15.0 17.0 13.0 17.0 13.0  8.0 4 
> 9821091    Joe.Bloggs       John 13.0 12.0 12.0 15.0 12.0  8.0 5 
> 9821091    Joe.Bloggs      Julie   NA   NA   NA 18.0 14.0  8.0 6 
> 9821091    Joe.Bloggs      Robin 12.0 12.5   NA 16.0 13.5  8.0 
7 
> 9821091    Joe.Bloggs      Steph   NA   NA 12.0 17.0 12.5  NA 
8 
> 9791734     Bob.Jones      Julie 13.0 12.0  8.0 16.0 13.0  8.0 9 
> 9791734     Bob.Jones      Robin 11.0 12.0  7.0 14.0 11.0  8.0 ...
> 
> 
> note that some students are marked by more assessors than 
others.
> 
> 
> What I want is each student's mean mark for each question, 
averaged
> over the appropriate assessors.  Is there a neat vectorized 
method I
> could use?
> 
If I understood it correctly you need something like that:

        ID student assessor Q1A  Q1B Q1C Q2A  Q2B Q3
1  2152833    Fred    Robin  15 17.0  13  14 13.0  8
2  2152833    Fred    Steph  14 13.0  11  16 13.0  8
3  2152833    Fred    Julie  15 17.0  13  17 13.0  8
4  9821091     Joe     John  13 12.0  12  15 12.0  8
5  9821091     Joe    Julie  NA   NA  NA  18 14.0  8
6  9821091     Joe    Robin  12 12.5  NA  16 13.5  8
7  9821091     Joe    Steph  NA   NA  12  17 12.5 NA
8  9791734     Bob    Julie  13 12.0   8  16 13.0  8
9  9791734     Bob    Robin  11 12.0   7  14 11.0  8
***10 9821091     Joe     John  14 15.0  14  15 11.0  9***

I added one line because each student was marked by the assessor 
only once in your example...

> aggregate(ppp[,4:9],list(ppp$student,ppp$assessor),mean)

  Group.1 Group.2  Q1A  Q1B Q1C Q2A  Q2B  Q3
***1     Joe    John 13.5 13.5  13  15 11.5 8.5***
2     Bob   Julie 13.0 12.0   8  16 13.0 8.0
3    Fred   Julie 15.0 17.0  13  17 13.0 8.0
4     Joe   Julie   NA   NA  NA  18 14.0 8.0
5     Bob   Robin 11.0 12.0   7  14 11.0 8.0
6    Fred   Robin 15.0 17.0  13  14 13.0 8.0
7     Joe   Robin 12.0 12.5  NA  16 13.5 8.0
8    Fred   Steph 14.0 13.0  11  16 13.0 8.0
9     Joe   Steph   NA   NA  12  17 12.5  NA



> The best I can come up with is 
"tapply(x$Q1A,x$name,mean,na.rm=T)" but
> this works question-by-question and I would like a reduced data 
frame
> with the same column headings.
> 
> 
> this is driving me crazy; thanks in advance!
> 
> 
> 
> -- 
> 
> Robin Hankin, Lecturer,
> School of Environmental and Marine Science
> Private Bag 92019 Auckland
> New Zealand
> 
> r.hankin at auckland.ac.nz
> tel 0064-9-373-7599 x6820; FAX 0064-9-373-7042
> 
> 
> 
> --f9295XO03655.1002013533/r.hankin.sems.auckland.ac.nz--
> 
> 
> 
> -- 
> 
> Robin Hankin, Lecturer,
> School of Environmental and Marine Science
> Private Bag 92019 Auckland
> New Zealand
> 
> r.hankin at auckland.ac.nz
> tel 0064-9-373-7599 x6820; FAX 0064-9-373-7042
> 
> 
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> -.-.-.-.- r-help mailing list -- Read
> http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", 
"help",
> or "[un]subscribe" (in the "body", not the subject !)  To:
> r-help-request at stat.math.ethz.ch
> 
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
.
> _._._._._

Petr Pikal
petr.pikal at precheza.cz
p.pik at volny.cz


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list