如何根据 R 数据框中的组列选择第一行和最后一行?
r programmingserver side programmingprogramming更新于 2025/6/27 7:52:17
数据提取在数据分析中必不可少,因为提取有助于我们保留数据集的重要信息。这些重要信息可能是组的第一行和最后一行,我们也可能希望使用这些行进行其他类型的分析,例如比较组间的初始值和最后一个数据值。我们可以使用 dplyr 包的 slice 函数,根据组列提取或选择第一行和最后一行。
示例
Consider the below data frame: > x1<-rep(1:4,each=10) > x2<-rpois(40,5) > df1<-data.frame(x1,x2) > head(df1,12)
输出
x1 x2 1 1 3 2 1 4 3 1 6 4 1 6 5 1 3 6 1 4 7 1 7 8 1 8 9 1 7 10 1 2 11 2 8 12 2 7
示例
> tail(df1,12)
输出
x1 x2 29 3 4 30 3 5 31 4 4 32 4 6 33 4 7 34 4 5 35 4 5 36 4 4 37 4 9 38 4 4 39 4 3 40 4 6
加载 dplyr 包 −
> library(dplyr) Attaching package: ‘dplyr’
以下对象已从 ‘package:stats’ − 中屏蔽
filter, lag
以下对象已从 ‘package:base’ − 中屏蔽
intersect, setdiff, setequal, union
根据组列 x1 选择第一行和最后一行 −
示例
> df1%>%group_by(x1)%>%slice(c(1,n())) # A tibble: 8 x 2 # Groups: x1 [4]
输出
x1 x2 <int> <int> 1 1 3 2 1 2 3 2 8 4 2 4 5 3 5 6 3 5 7 4 4 8 4 6
我们来看另一个例子 −
示例
> y1<-rep(c("A","B","C"),each=10) > y2<-rnorm(30) > df2<-data.frame(y1,y2) > head(df2,12)
输出
y1 y2 1 A -1.1640927 2 A 0.3146504 3 A -1.5213974 4 A -1.3728970 5 A -0.9964678 6 A -0.5022738 7 A -0.4225463 8 A -0.3501037 9 A 0.3043838 10 A -1.5216102 11 B -0.2425732 12 B 0.5554217
示例
> tail(df2,12)
输出
y1 y2 19 B 0.30172320 20 B 1.68341427 21 C 0.55127997 22 C -1.77840803 23 C 0.03001296 24 C -1.19246335 25 C 0.03612258 26 C -0.35468216 27 C -0.63579743 28 C -1.90074403 29 C 0.50072577 30 C 0.31911138
示例
> df2%>%group_by(y1)%>%slice(c(1,n())) # A tibble: 6 x 2 # Groups: y1 [3]
输出
y1 y2 <fct> <dbl> 1 A -1.16 2 A -1.52 3 B -0.243 4 B 1.68 5 C 0.551 6 C 0.319