我想按组(name
列)对数据集进行重采样。例如:
names <- c(rep("a", 3), rep("b", 3), rep("c", 3))
test <- tibble(name = names, number = rep(c(1:3), 3))
test
name number
<chr> <int>
1 a 1
2 a 2
3 a 3
4 b 1
5 b 2
6 b 3
7 c 1
8 c 2
9 c 3
我知道tidyverse中有一个slice_sample
,但我注意到它不能设置seed来使每个组都有相同的重采样结果(number
)。我想知道我如何在每个name
组中用replacement对行进行重采样,并且每个组也可以有相同的结果(1-2-2),就像下面的预期输出一样?
name number
1 a 1
2 a 2
3 a 2
4 b 1
5 b 2
6 b 2
7 c 1
8 c 2
9 c 2
谢谢大家!
1条答案
按热度按时间vjrehmav1#
要对每组相同的行索引进行采样,您可以先生成索引,然后将其传递给
slice()
。这可能是不必要的,但我们可以将其封装在一个函数中,该函数检查各组是否大小相等。