我有一个大的数据框,其中有一列是组名,使用dplyr进行了分组。因此,多行具有相同的组名。为了减少数据量,我想从每个组的第一个元素开始提取每个第n个元素。是否有任何不需要循环的R方式?
对于使用序列子集化每一行的方法,通常会错过每个组的第一行。例如:
data[seq(1, nrow(data), 10), ] # Some groups start without the first row.
输入:
Val Group
1 1.0 Fruit
2 2.0 Fruit
3 3.0 Fruit
4 1.5 Veg
5 2.8 Veg
6 4.2 Veg
7 5.1 Veg
输出(每个第二个元素,注意第三行!):
Val Group
1 1.0 Fruit
2 3.0 Fruit
**3 1.5 Veg**
4 4.2 Veg
dat %>% group_by(Group) %>% filter(row_number() %% 2 == 1)
,这在处理大数据时应该会更快一些。 - thelatemail