我有一个带有列的大数据框,其中包含一个组名,该组名与 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

最佳答案

library(dplyr)
data %>% group_by(Group) %>%
  slice(seq(1, n(), by = 2))

这给出:
# A tibble: 4 x 2
# Groups:   Group [2]
    Val Group
  <dbl> <fct>
1   1   Fruit
2   3   Fruit
3   1.5 Veg
4   4.2 Veg

关于r - 如何从分组数据帧中的每个组中获取第n个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57066541/

10-10 04:00