在异常序列上创建 ID

Create ID over an abnormal sequence

我有以下代码采样 1 行 5 次,2 行 5 次,3 行 5 次等等。 在 运行 和 lapply 并将其转换为数据框以进行比较之后,我需要一种方法来更改 ID 变量以充当我的组。所以“想要”的行 1:5 将是“第 1 组”,第 6:15 行将是“第 2 组”,16:30 将是“第 3 组”等等... 这些是分组,因为第 1 组只有 ID 列中每个数字的一​​个重复,第 2 组有两个重复,第 3 组有 3 个重复,依此类推。

代码

iris<- iris

select_rows <- 1:4
n_times <- 5
inds <- nrow(iris)

result <- lapply(select_rows, function(x) 
  replicate(n_times, iris[sample(inds, x), ], simplify = FALSE))

want<- bind_rows(result, .id = 'source')
View(want)

例如考虑 运行 每列的方差分析,ID 列不会提供足够的观察分组。 我想我可以使用 ifelsemutate 的组合来手动浏览并将行分配给某些组,但我希望避免这种情况,因为我需要对几个不同的数据帧执行此操作。 我还尝试了以下代码在序列上分配组,但意识到它不起作用,因为每个组中的观察数不相同:

final<- want %>% mutate(Group = rep(seq(1,ceiling(nrow(want)/5)),each = 5))

如有任何帮助,我们将不胜感激。

使用 reptimes 参数得到五个 1、十个 2、十五个 3 等。

dat$id <- rep(1:3, times=1:3*5)

这是另一个使用 findIntervalcumsum 的选项:

want$grp <- c(findInterval(seq(1:nrow(want)), cumsum(c(n_times * select_rows))+1))

输出

   source Sepal.Length Sepal.Width Petal.Length Petal.Width    Species grp
1       1          5.4         3.7          1.5         0.2     setosa   0
2       2          4.8         3.1          1.6         0.2     setosa   0
3       3          6.1         2.8          4.7         1.2 versicolor   0
4       4          6.7         3.3          5.7         2.5  virginica   0
5       5          5.4         3.4          1.7         0.2     setosa   0
6       6          5.5         2.4          3.8         1.1 versicolor   1
7       6          6.0         2.2          5.0         1.5  virginica   1
8       7          5.0         3.5          1.6         0.6     setosa   1
9       7          5.6         2.5          3.9         1.1 versicolor   1
10      8          5.2         3.4          1.4         0.2     setosa   1
11      8          6.2         3.4          5.4         2.3  virginica   1
12      9          6.7         3.1          4.7         1.5 versicolor   1
13      9          5.1         3.3          1.7         0.5     setosa   1
14     10          7.7         3.8          6.7         2.2  virginica   1
15     10          6.0         3.4          4.5         1.6 versicolor   1
16     11          5.0         3.3          1.4         0.2     setosa   2
17     11          6.6         3.0          4.4         1.4 versicolor   2
18     11          5.6         2.5          3.9         1.1 versicolor   2
19     12          4.4         3.2          1.3         0.2     setosa   2
20     12          6.7         3.3          5.7         2.5  virginica   2
21     12          5.9         3.0          5.1         1.8  virginica   2
22     13          5.8         2.7          4.1         1.0 versicolor   2
23     13          5.4         3.4          1.5         0.4     setosa   2
24     13          5.5         2.4          3.8         1.1 versicolor   2
25     14          5.6         2.5          3.9         1.1 versicolor   2
26     14          6.0         2.2          5.0         1.5  virginica   2
27     14          5.7         3.8          1.7         0.3     setosa   2
28     15          6.2         3.4          5.4         2.3  virginica   2
29     15          6.5         3.2          5.1         2.0  virginica   2
30     15          5.8         2.7          4.1         1.0 versicolor   2
31     16          5.1         3.5          1.4         0.2     setosa   3
32     16          5.8         2.7          5.1         1.9  virginica   3
33     16          4.3         3.0          1.1         0.1     setosa   3
34     16          4.6         3.2          1.4         0.2     setosa   3
35     17          4.9         3.0          1.4         0.2     setosa   3
36     17          5.4         3.0          4.5         1.5 versicolor   3
37     17          6.7         3.1          4.7         1.5 versicolor   3
38     17          6.3         2.3          4.4         1.3 versicolor   3
39     18          4.7         3.2          1.3         0.2     setosa   3
40     18          6.5         2.8          4.6         1.5 versicolor   3
41     18          4.9         3.1          1.5         0.1     setosa   3
42     18          6.4         2.7          5.3         1.9  virginica   3
43     19          6.1         3.0          4.9         1.8  virginica   3
44     19          6.2         2.8          4.8         1.8  virginica   3
45     19          4.8         3.1          1.6         0.2     setosa   3
46     19          5.9         3.0          5.1         1.8  virginica   3
47     20          5.4         3.9          1.7         0.4     setosa   3
48     20          6.2         2.9          4.3         1.3 versicolor   3
49     20          6.4         2.7          5.3         1.9  virginica   3
50     20          6.3         3.4          5.6         2.4  virginica   3