如何在 R 資料框中根據分組列選擇第一行和最後一行?


在資料分析中,資料提取是必要的,因為提取有助於我們保留資料集的重要資訊。這些重要資訊也可能是組的第一行和最後一行,我們可能還想將這些行用於其他型別的分析,例如比較組之間的初始資料值和最後資料值。我們可以使用 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

更新於: 2020-09-04

1K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告