There are couple of options. One is to match
the 'level' column with level.order' to get the numeric index and then
order` based on it
df[order(match(df$level, level.order)),]
Or convert the 'level' to factor
specifying the levels
as 'level.order' and then order
on it
df[order(factor(df$level, levels = level.order)),]