Мы можем случайно выбрать из серии 1 ... N, где N - количество уровней рассматриваемого фактора (Species
).
Затем мы сопоставляем новый порядок со столбцом и сортируем его. Разобранный на этапы для иллюстрации, он выглядит так:
tmp <- sample_n(as.data.frame(seq(1,length(unique(d$Species)))),3)[,1]
d$index <- tmp[as.numeric(d$Species)]
d <- d[order(d$index),]
Вы можете сжать это в 1 строку / шаг:
d <- d[order(sample_n(as.data.frame(seq(1,length(unique(d$Species)))),3)[,1][as.numeric(d$Species)]),]