可以使用dplyr包中的arrange()和group_by()函数组合来实现。首先按照所需的顺序对数据框进行排序,然后按照指定的分组变量进行分组,最后使用slice()函数提取相应的行。以下是代码示例:
library(dplyr)
# 创建一个数据框
df <- data.frame(year = rep(c(2015, 2016), each = 5),
group = rep(c("A", "B", "C"), each = 2, times = 2),
value = rnorm(10))
# 按照group变量的顺序对数据框进行排序,然后按照year和group进行分组。
df_sorted <- arrange(df, group) %>%
group_by(year, group)
# 提取每个分组的第一行。
df_result <- slice(df_sorted, 1)
df_result
输出结果:
# A tibble: 6 x 3
# Groups: year, group [6]
year group value
1 2015 A -1.13
2 2015 B 1.07
3 2015 C 0.222
4 2016 A 0.473
5 2016 B -0.504
6 2016 C 0.772
这里使用的数据框有两个分组变量,但代码也可以根据需要轻松地调整以适应更多或更少的分组变量。