如何在 R 中刪除每個組的前幾行?
為了刪除 R 中每個組的前幾行,我們可以在使用 group_by 函式進行分組後,使用 dplyr 包的 slice 函式。
例如,如果我們有一個名為 df 的資料框,其中包含一個分組列,例如 Grp,那麼我們可以使用下面給出的命令從每個組中刪除前 2 行:
df%>%group_by(Grp)%>%slice(3:n())
示例 1
以下程式碼片段建立了一個示例資料框:
Group<-sample(c("India","China","UK"),20,replace=TRUE)
Int_Score<-sample(20:50,20)
df1<-data.frame(Group,Int_Score)
df1輸出
建立了以下資料框:
Group Int_Score 1 UK 25 2 UK 28 3 India 38 4 China 49 5 China 33 6 India 42 7 India 21 8 UK 46 9 India 20 10 India 43 11 China 37 12 UK 40 13 India 32 14 China 26 15 India 41 16 UK 24 17 UK 48 18 UK 39 19 India 35 20 India 22
要載入 dplyr 包並從 df1 中每個組中刪除前兩行,請將以下程式碼新增到上面的程式碼片段中:
library(dplyr) df1%>%group_by(Group)%>%slice(3:n()) # A tibble: 14 x 2 # Groups: Group [3]
輸出
如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:
Group Int_Score <chr> <int> 1 China 37 2 China 26 3 India 21 4 India 20 5 India 43 6 India 32 7 India 41 8 India 35 9 India 22 10 UK 46 11 UK 40 12 UK 24 13 UK 48 14 UK 39
示例 2
以下程式碼片段建立了一個示例資料框:
Class<-sample(c("I","II","III"),20,replace=TRUE)
Response<-rpois(20,5)
df2<-data.frame(Class,Response)
df2輸出
建立了以下資料框:
Class Response 1 II 1 2 I 7 3 III 10 4 I 3 5 III 3 6 II 2 7 I 6 8 III 3 9 II 5 10 I 6 11 I 4 12 III 3 13 II 4 14 III 1 15 III 4 16 III 8 17 III 8 18 III 4 19 III 4 20 I 6
要從 df2 中每個組中刪除前兩行,請將以下程式碼新增到上面的程式碼片段中:
df2%>%group_by(Class)%>%slice(3:n()) # A tibble: 14 x 2 # Groups: Class [3]
輸出
如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:
Class Response <chr> <int> 1 I 6 2 I 6 3 I 4 4 I 6 5 II 5 6 II 4 7 III 3 8 III 3 9 III 1 10 III 4 11 III 8 12 III 8 13 III 4 14 III 4
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP