【发布时间】:2016-03-08 19:27:32
【问题描述】:
给定一个数据框,我可以对指定属性下的行进行分组,对它们进行计数以了解组的大小,并使用 ID 号对其进行唯一分配。但我真正需要的是执行此过程,以便在以下三个条件下限制组大小:
- 如果大小模 3 = 0,则分成所有大小为 3 的较小组,
- 如果大小模 3 = 1,则分成大小为 3 的较小组和大小为 2 的两组。
- 如果大小模 3 = 2,则分成大小为 3 和大小为 2 的较小组
因此,如果大小为 4,则创建两个组,大小均为 2;而当 size 为 5 时,则分成 size 3 和 2 两组。
我创建了以下最小示例。
这是起始数据。通常,它不会被排序并且可以有更多的列:
structure(
list(property = c("A", "B", "B", "C", "C", "C", "D", "D", "D", "D", "E", "E", "E", "E", "E", "F", "F", "F", "F", "F", "F", "G", "G", "G", "G", "G", "G", "G")),
class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -28L),
.Names = "property"
)
期望的输出是:
structure(
list(property = c("A", "B", "B", "C", "C", "C", "D", "D", "D", "D", "E", "E", "E", "E", "E", "F", "F", "F", "F", "F", "F", "G", "G", "G", "G", "G", "G", "G"),
id = c(1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12)),
class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -28L),
.Names = c("property", "id")
)
组的顺序并不重要。
【问题讨论】:
标签: r data-manipulation