按组每 5 行子集?
Subset every 5 rows by group?
我有一个包含多个组的数据集,我想将组内的行按 5 的倍数进行子集化,并添加第一行(因此每个组中的第 1、5、10、15 等行)。
现在我的数据集有一个名为“Group ID”的列和一些其他列(例如时间、日期等),但没有任何指示任何类型的行号。
如有任何帮助,我们将不胜感激!我在想也许与 dplyr 兼容?我正在尝试使用函数 slice 但到目前为止运气不好。
您需要在每个组中创建序列,然后使用过滤器
library(dplyr)
df <- data.frame(id = c(1, 2, 1, 2, 2, 3, 4, 3, 1, 2, 4, 4, 4, 3, 1, 1, 1, 2, 2),
b = c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6))
df <- df %>%
group_by(id) %>%
mutate(group_index = row_number()) %>%
filter(group_index == 1 | group_index %% 5 == 0)
我有一个包含多个组的数据集,我想将组内的行按 5 的倍数进行子集化,并添加第一行(因此每个组中的第 1、5、10、15 等行)。
现在我的数据集有一个名为“Group ID”的列和一些其他列(例如时间、日期等),但没有任何指示任何类型的行号。
如有任何帮助,我们将不胜感激!我在想也许与 dplyr 兼容?我正在尝试使用函数 slice 但到目前为止运气不好。
您需要在每个组中创建序列,然后使用过滤器
library(dplyr)
df <- data.frame(id = c(1, 2, 1, 2, 2, 3, 4, 3, 1, 2, 4, 4, 4, 3, 1, 1, 1, 2, 2),
b = c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6))
df <- df %>%
group_by(id) %>%
mutate(group_index = row_number()) %>%
filter(group_index == 1 | group_index %% 5 == 0)