Вы можете использовать tail
в вызове Map
.
do.call(rbind, Map(tail, split(df, df$group), 3:1))
# value group
# A.3 3 A
# A.4 4 A
# A.5 5 A
# B.9 19 B
# B.10 20 B
# C 30 C
Примечание: сортировать заранее, если данные отсортированы не так хорошо, как в данном примере,например, df <- with(df, df[order(group, value), ])
.
Данные
df <- structure(list(value = c(1L, 2L, 3L, 4L, 5L, 16L, 17L, 18L, 19L,
20L, 26L, 27L, 28L, 29L, 30L), group = structure(c(1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("A",
"B", "C"), class = "factor")), class = "data.frame", row.names = c(NA,
-15L))