如何在 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
广告