data.table:
library(data.table)
dt = as.data.table(your_df)
dt[, NewClass := .GRP, by = list(School, Class)]
dt
.GRP - . , list(School, Class) by, .
, data.table >= 1.9.0 setDT, a data.frame data.table ( ), .tables.
require(data.table)
setDT(your_df)