如何在 R 資料框中按組刪除僅第一行重複行?
要按組刪除僅第一行重複行,我們可以使用 dplyr 包的 filter 函式和 duplicated 函式。
例如,如果我們有一個名為 df 的資料框,其中包含一個分組列,例如 Grp,則可以透過使用以下命令按組刪除僅第一行重複行:
df%>%group_by(Grp)%>%filter(duplicated(Grp)|n()==1)
示例 1
以下程式碼片段建立了一個示例資料框:
Group<-sample(LETTERS[1:4],20,replace=TRUE) Response<-rpois(20,5) df1<-data.frame(Group,Response) df1
輸出
建立了以下資料框:
Group Response 1 D 9 2 A 3 3 B 4 4 A 5 5 B 8 6 B 8 7 D 2 8 D 5 9 B 4 10 C 4 11 D 7 12 D 5 13 C 5 14 A 2 15 B 5 16 A 9 17 B 6 18 C 8 19 D 3 20 A 7
要載入 dplyr 包並從 df1 中每個組中刪除僅第一行重複行,請將以下程式碼新增到上述程式碼片段中:
library(dplyr) df1%>%group_by(Group)%>%filter(duplicated(Group)|n()==1) # A tibble: 16 x 2 # Groups: Group [4]
輸出
如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:
Group Response <chr> <int> 1 A 5 2 B 8 3 B 8 4 D 2 5 D 5 6 B 4 7 D 7 8 D 5 9 C 5 10 A 2 11 B 5 12 A 9 13 B 6 14 C 8 15 D 3 16 A 7
示例 2
以下程式碼片段建立了一個示例資料框:
Category<-sample(c("First","Second","Third"),20,replace=TRUE) Rank<-sample(1:10,20,replace=TRUE) df2<-data.frame(Category,Rank) df2
輸出
建立了以下資料框:
Category Rank 1 Second 10 2 Second 5 3 Second 4 4 Third 3 5 Second 5 6 Second 9 7 First 6 8 Second 10 9 First 9 10 Third 1 11 First 8 12 Second 3 13 Second 5 14 Third 1 15 Third 2 16 Second 4 17 Second 6 18 Third 6 19 Second 2 20 Second 9
要從 df2 中每個組中刪除僅第一行重複行,請將以下程式碼新增到上述程式碼片段中:
df2%>%group_by(Category)%>%filter(duplicated(Category)|n()==1) # A tibble: 17 x 2 # Groups: Category [3]
輸出
如果您將以上所有程式碼作為單個程式執行,它將生成以下輸出:
Category Rank <chr> <int> 1 Second 5 2 Second 4 3 Second 5 4 Second 9 5 Second 10 6 First 9 7 Third 1 8 First 8 9 Second 3 10 Second 5 11 Third 1 12 Third 2 13 Second 4 14 Second 6 15 Third 6 16 Second 2 17 Second 9
廣告