按组每 5 行子集?
Posted
技术标签:
【中文标题】按组每 5 行子集?【英文标题】:Subset every 5 rows by group? 【发布时间】:2022-01-01 15:46:33 【问题描述】:我有一个包含多个组的数据集,并且希望将组中的行沿 5 的倍数划分为子集,并添加第一行(因此每个组中的第 1、5、10、15 行等)。
现在我的数据集有一个名为“组 ID”的列和一些其他列(例如时间、日期等),但没有任何表示任何类型的行号。
任何帮助将不胜感激!我在想也许与 dplyr 兼容的东西?我正在尝试使用函数 slice,但到目前为止没有运气。
【问题讨论】:
如果您可以使用dput(x)
提供示例数据集,将会很有帮助。
【参考方案1】:
您需要在每个组中创建序列,然后使用过滤器
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 行子集?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Pandas DataFrame 的列和行子集转换为 numpy 数组?