R中data.frame的嵌套采样

R中data.frame的嵌套采样,r,dataframe,random,dplyr,sample,R,Dataframe,Random,Dplyr,Sample,在下面的data.framep中,有757唯一的学区名称(dname)和5210唯一的学区名称(sname) 我想知道如何从R的40个dnames(地区)中抽取126个snames(学校) 因此,在最后一个示例(比如X)中,dim(table(X$dname,X$sname))必须返回:[1]40126 从某种意义上说,这是多阶段采样,因此我对任何软件包都持开放态度 p <- read.csv("https://raw.githubusercontent.com/hkil/m/m

在下面的data.frame
p
中,有
757
唯一的学区名称(
dname
)和
5210
唯一的学区名称(
sname

我想知道如何从R的40个
dname
s(地区)中抽取126个
sname
s(学校)

因此,在最后一个示例(比如
X
)中,
dim(table(X$dname,X$sname))
必须返回:
[1]40126

从某种意义上说,这是
多阶段采样
,因此我对任何软件包都持开放态度

p <- read.csv("https://raw.githubusercontent.com/hkil/m/master/a.csv")

p我想对于这种
多阶段采样,您可以尝试下面的代码

unq_dname <- unique(p$dname)
repeat {
  out <- subset(p, dname %in% sample(unq_dname, 40))
  if (length(unique(out$sname)) == 126) break
}

@感谢您的反馈!如果有
126
行作为输出,那么代码似乎应该跳出循环。如果我遗漏了什么,我会再次检查…@akrun似乎OP有这样的情况:一些单个
sname
落入多个
dname
s。我更新了关于
中断
dim(with(out,table(dname,sname)))