Hi:<br><br>It seems to me that another way to handle this problem easily would be to add a variable indicating the 2009 school before converting it to a data table. The function is simple enough: find the max SCHOOL_NUMBER per STUDENT_ID and use ave() to map it to all rows with the same STUDENT_ID. <br>
<br>library(data.table)<br><br>txt$SCHOOL2009 &lt;- with(txt, ave(SCHOOL_NUMBER, STUDENT_ID, FUN = max))<br>dtxt &lt;- data.table(txt)<br>dtxt[YEAR == 2008, mean(SCORE), by = &#39;SCHOOL2009&#39;]<br>     SCHOOL2009   V1<br>
[1,]        200 48.2<br>[2,]        400 53.0<br><br>As this is my first posting on this list, how do I follow-up to an existing thread?<br><br>Dennis<br>