如何从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