Вы пробовали это:
df2$variable <- factor(df2$variable,
levels = c('vph.shr','vnu.shr'),ordered = TRUE)
Я просто выбрал там порядок, так как моя система настроена немного иначе, чем ваша, я подозреваю, поэтому мой «порядок по умолчанию» может отличаться. Но вы можете просто переключать положение уровней при их указании.
Несколько других вариантов, в зависимости от ваших вкусов:
Для простого изменения текущего порядка:
factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE)
или вы можете использовать поднаборы, чтобы указать конкретный порядок, если вы не хотите печатать каждый уровень вручную:
factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE)