我想为每个区域随机抽取一个站点,创建一个新的数据框,然后重复这些过程,直到对所有站点进行采样。因此,每个数据框不会包含来自同一区域的相同站点。
我的真实数据框中的几个区域比其他区域有更多的站点(C 区有 4 个站点)。我想删除这些行(也许我应该在制作多个数据框之前这样做)。
这是一个示例数据框(真实的数据框有 >100 个区域和每个区域 >10 个站点):
mydf <- read.table(header = TRUE, text = 'V1 V2 Region Site
5 1 A X1
5 6 A X2
8 9 A X3
2 3 B X1
3 1 B X2
7 8 B X3
1 2 C X1
9 4 C X2
4 5 C X3
6 7 C X4')
重复以下代码三次会生成包含给定区域的相同站点的数据帧(第二个和第三个表都具有区域 A 的站点 X2)。
do.call(rbind, lapply(split(mydf, mydf$Region), function(x) x[sample(nrow(x), 1), ]))
V1 V2 Region Site
A 8 9 A X3
B 2 3 B X1
C 6 7 C X4
V1 V2 Region Site
A 5 6 A X2
B 7 8 B X3
C 9 4 C X2
V1 V2 Region Site
A 5 6 A X2
B 3 1 B X2
C 6 7 C X4
您能否帮我创建多个数据框,以便所有数据框都包含所有区域,但每个数据框都包含唯一的 Region-Site 组合。
编辑:这是预期的输出。为了产生这些,在第一次采样中,从每个区域中随机抽取一个站点(行)并制作一个数据框。在第二次抽样中,重复相同的过程,但无法绘制给定区域的相同站点。我想要的是包含 Region-Site 的独特组合的独立数据框。
V1 V2 Region Site
5 1 A X1
7 8 B X3
1 2 C X1
V1 V2 Region Site
5 6 A X2
3 1 B X2
4 5 C X3
V1 V2 Region Site
8 9 A X3
2 3 B X1
9 4 C X2