【问题标题】:nested sampling of a data.frame in RR中data.frame的嵌套采样
【发布时间】:2021-02-01 17:25:39
【问题描述】:

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

我想知道如何从 R 中的 40 个dnames(地区)中抽取 126 个snames(学校)?

所以,在最终样本中(比如X),dim(table(X$dname, X$sname)) 必须返回:> [1] 40 126

从某种意义上说,这是multi-stage sampling,所以我对任何包都持开放态度。

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

【问题讨论】:

    标签: r dataframe random dplyr sample


    【解决方案1】:

    我想你可以试试下面的代码来处理这种multi-stage sampling

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

    您可以通过以下方式查看尺寸

    dim(with(out,table(dname,sname)))
    

    【讨论】:

    • @akrun 感谢您的反馈!如果有126 行作为输出,代码似乎应该跳出循环。我会仔细检查我是否遗漏了什么......
    • @akrun 似乎 OP 有一些单一的sname 属于多个dnames 的情况。我更新了关于break 条件的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2014-10-02
    • 2021-02-25
    • 2017-12-06
    • 2016-06-17
    • 2017-04-05
    • 2015-06-04
    相关资源
    最近更新 更多