不同大小组的高效递归随机抽样

2024-06-26

这个问题是我之前关于递归随机抽样问题的后续问题高效的递归随机采样 https://stackoverflow.com/questions/69824065/efficient-recursive-random-sampling。当组大小相同或每组需要固定数量的样本时,该线程中的解决方案可以正常工作。然而,让我们想象一个数据集如下:

   ID1 ID2
1    A   1
2    A   6
3    B   1
4    B   2
5    B   3
6    C   4
7    C   5
8    C   6
9    D   6
10   D   7
11   D   8
12   D   9

我们想要随机采样的地方up to n每个 ID1 对应 ID2,并递归地执行此操作。递归地这里意味着我们正在从第一个 ID1 移动到最后一个 ID1,并且如果 ID2 已经为 ID1 采样,那么它不应该用于后续 ID1。比方说n = 2,那么预期结果如下;

ID1 ID2
1    A   1
2    A   6
4    B   2
5    B   3
6    C   4
7    C   5
11   D   8
12   D   9
  • 对于ID1 =“A”,正好有两个潜在的ID2,因此两者都被选择。
  • 对于ID1 =“B”,还有两个潜在的ID2可供选择,因此两者都被选择。
  • 对于ID1 =“C”,还有两个潜在的ID2可供选择,因此两者都被选择。
  • 对于 ID =“D”,还剩下三个潜在的 ID2 可供采样,因此从其中随机选择两个。

除了示例所示的情况之外,还会发生什么情况;

  • 每个ID1总是有可用的非零数量的 ID2, 然而,所有这些 ID2 可能都已被使用。在 在这种情况下,ID1 应该被简单地省略。
  • 有可能 ID1 中没有一个具有 ID2 中指定的 n。在那里面 在这种情况下,应检索最接近指定 n 的 n。
  • 身份证号码不一定是seq(ID1).
  • ID2 也可以是类似于 ID1 的字符向量。

样本 df;

df <- structure(list(ID1 = c("A", "A", "B", "B", "B", "C", "C", "C", 
"D", "D", "D", "D"), ID2 = c(1, 6, 1, 2, 3, 4, 5, 6, 6, 7, 8, 
9)), class = "data.frame", row.names = c(NA, -12L))

以下功能似乎可以满足您的需求。基本上,它循环遍历每组ID1并选择相应的行ID2尚未采样。然后它选择不同的行(在某些情况下ID1有重复的ID2价值观。样本量将是两者中的最小值n,或该组的行数。

sample <- function(df, n) {
  `%notin%` <- Negate(`%in%`)
  groups <- unique(df$ID1)
  out <- data.frame(ID1 = character(), ID2 = character())
  
  for (group in groups) {
    options <- df %>%
      filter(ID1 == group,
             ID2 %notin% out$ID2)
    
    chosen <- sample_n(options,
                       size = min(n, nrow(options))) %>%
      distinct()
    
    out <- rbind(out, chosen)
  }
  
  out
}

set.seed(123)
sample(df, 2)

  ID1 ID2
1   A   1
2   A   6
3   B   2
4   B   3
5   C   4
6   C   5
7   D   8
8   D   9

一组的情况ID1 has ID2已经用完的: 输入:

# A tibble: 10 × 2
   ID1     ID2
   <chr> <dbl>
 1 A         1
 2 A         3
 3 B         1
 4 B         3
 5 C         5
 6 C         6
 7 C         7
 8 C         7
 9 D        10
10 D        20

Output:

sample(df2, 2)
# A tibble: 6 × 2
  ID1     ID2
  <chr> <dbl>
1 A         3
2 A         1
3 C         6
4 C         7
5 D        20
6 D        10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同大小组的高效递归随机抽样 的相关文章

  • 在 R Markdown 中,无论输出类型如何(pdf、html、docx),都在每个页面上创建页眉/页脚

    我想补充一下问题 当我编织为 pdf 时 那里的代码 也在下面 对我来说工作得非常好 但我不会获得 html 或 docx 输出的页眉 页脚 在 R Markdown 中 无论输出文档的类型如何 我可以做什么来为输出文档的每个页面生成页眉
  • 使用 dplyr::mutate 重新编码而不在函数中工作

    我正在尝试使用dplyr mutate across 重新编码 a 中的指定列tbl 单独使用它们效果很好 但我无法让它们在函数中工作 library dplyr library tidyr df1 lt tibble Q7 1 1 5 Q
  • 高效的switch语句

    在以下两个版本的 switch case 中 我想知道哪个版本是高效的 1 string convertToString int i switch i case 1 return new string one case 2 return n
  • 如何在 dbplyr 中使用自定义 SQL 函数?

    我想计算数据库中的 Jaro Winkler 字符串距离 如果我将数据带入 R 使用collect 我可以轻松地使用stringdist函数从stringdist包裹 但我的数据非常大 我想过滤 Jaro Winkler 距离before将
  • 当 R 中出现“warnings()”时中断循环

    我有一个问题 我正在运行一个循环来处理多个文件 我的矩阵非常巨大 因此如果我不小心 我经常会耗尽内存 如果创建任何警告 是否有办法打破循环 它只是继续运行循环并报告它在很久以后失败 烦人 聪明的 stackoverflow ers 有什么想
  • R data.table 使用列作为参数将函数应用于行

    我有以下内容data table x structure list f1 1 3 f2 3 5 Names c f1 f2 row names c NA 3L class c data table data frame 我想对每一行应用一个
  • Python 常见问题解答:“异常有多快?”

    我只是在看Python常见问题解答 因为它在另一个问题中提到了 以前从未真正详细地看过它 我发现这个问题 http docs python org 3 faq design html how fast are exceptions 异常有多
  • 使用 Javascript 或 jQuery 按第一列快速对表格进行排序

    我有一个动态填充的表FullCalendar 问题是FullCalendar不关心其原始顺序 该表如下所示 table thead tr th th th Date th th hours th tr thead tbody tr td c
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • R 中循环函数返回什么值

    我正在阅读 R 语言手册 想知道循环函数返回什么值 手册第 3 3 2 节循环中说 三个语句 for while repeat 中的每一个都返回最后计算的语句的值 循环语句的返回值始终为 NULL 并且是不可见返回的 那么返回什么值 NUL
  • 为了提高性能,我应该将 javascript 和 css 文件合并为一个吗? [复制]

    这个问题在这里已经有答案了 YSlow 报告表明 我在特定页面上有许多 javascript 文件 这些文件应该合并为一个 我在特定页面上有许多 css 文件 这些文件应该合并为一个 Q1 任何机构都可以详细说明这一点 如何才能快速地将它们
  • 如何在闪亮的应用程序中初始化渲染项目的默认值

    介绍 In a shinyApp 我想用动态输入渲染输出 我的问题是 使用shinydashboard使用不同的选项卡 默认值来自 Input 仅当激活相应选项卡时才会呈现 想想输入和输出选项卡 当使用时我得到同样的行为switch声明in
  • Java 与 C++ - 光线追踪

    我用 Java 创建了简单的光线追踪器作为一个业余爱好项目 但是它很慢 虽然速度不是特别慢 但还是很慢 我想知道使用 C 或 C 等较低级语言是否可以获得任何性能提升 或者差异可以忽略不计 我应该坚持改进 我的 算法吗 我认为这个问题的答案
  • 我们可以有更多错误(消息)吗?

    在 R 中 如果函数使用变量 有没有办法弹出错误消息 未在函数体内声明 即我希望有人标记这种类型的函数 aha lt function p return p n 看 如果某个地方碰巧有一个 n 变量 aha p 2 会给我一个 答案 因为
  • R 矩阵到犰狳的转换非常慢

    观察 对于中等大小的矩阵 将矩阵从 R 传递到 C 的开销要慢得多arma mat类型比NumericMatrix类型 大约需要 250 倍的时间 这是一个最小的例子 include
  • Taglib:性能和崩溃问题

    我在 Qt 应用程序中使用 taglib 库 1 7 2 从音乐文件夹中读取 mp3 文件的一些元数据 问题是我发现它非常慢 例如 这是代码 QString path C Music QDir d path QStringList file
  • “内存泄漏”剖析

    从 NET 角度来看 什么是内存泄漏 https en wikipedia org wiki Memory leak 如何确定您的应用程序是否存在泄漏 有什么影响 如何防止内存泄漏 如果您的应用程序存在内存泄漏 当进程退出或被终止时它会消失
  • 通过环境.yml 文件使用 conda 安装 R 包

    通常我会创建 conda 环境 例如 conda env create f environment yml conda activate env name 通常我使用 Python 工作 典型的environment yml简单的文件可能看
  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找

随机推荐

  • 创建 UIImageView 的子类

    我还没有找到 UIImageView 在创建 Objective C 类期间从下拉列表中进行选择的选项 我使用的是 xcode 4 3 我想知道我们是否允许扩展 UIImageView 类 或者我必须继承 UIView 自定义 UIImag
  • 需要在 Coldfusion 9 上运行 JPA + Hibernate java 项目的建议

    我有一个使用 JPA 2 Hibernate 3 5 6 进行数据访问的 java 项目 它在 JBoss 应用程序服务器上运行得很好 现在我尝试在 Coldfusion 9 环境上运行它 我看到 CF 9 已经有了 hibernate3
  • 将记录与另一个表上的最新记录连接

    我正在尝试创建一个 SQL 视图 我如何从一个表中选择最新的记录 而其他记录保持原样 我需要从所有表中选择所有记录 这工作正常 但我需要仅按日期选择最新的提案 这是我遇到的问题 这是我到目前为止所拥有的 SELECT TOP 100 PER
  • 在 JavaScript(而非 JQuery)中自动设置电话号码格式

    我发现以下代码用于在 JavaScript 中格式化电话号码这篇文章来自堆栈溢出 https stackoverflow com questions 45471788 formatting the phone number for mult
  • 如何用python从客户端向服务器发送消息

    我正在阅读带有客户端和服务器的 Python 2 7 10 中的两个程序 如何修改这些程序以便从客户端向服务器发送消息 服务器 py usr bin python This is server py file import socket I
  • 后退按钮不会导致回发到 MVC 中的控制器操作

    当我在 Win7 上的 IE10 或 Chrome 中单击后退按钮时 它不会到达 MVC 控制器中的断点 IE 开发者工具中的 网络 选项卡显示 304 未修改 并且 Fiddler 未捕获该请求 我期待着回帖 这样我就可以在我的控制器中工
  • IHttpModule 和控制台应用程序的流畅 NHibernate 模式

    我目前有一个在存储库模式中使用 Fluent NHibernate LINQ 的 C MVC 2 Web 应用程序 并使用 Ninject 来处理 MVC 控制器的构造函数要求 将其传递到存储库中 我的 Fluent NHibernate
  • 即使单击“允许”后,也会出现“执行该操作需要授权”消息

    我最近遇到了一个授权新的 Google App Script 项目的问题 特别是使用 Cloud SQL 管理 API 的项目 相同的代码存在于之前授权的 GAS 项目中并且工作正常 但是如果我获取 GAS 项目的副本并尝试第一次运行某个函
  • 如何只处理某些 XML 节点?

    这是我的 XML 片段 它有一个根元素
  • 手风琴内的 ui bootstrap datepicker 不可见

    我正在尝试在手风琴内制作一个带有日期选择器的模块 问题是日期选择器弹出框在手风琴上不可见 这是一个显示问题的笨蛋 http plnkr co edit jBqU0LXQFcUuzQLency2 p preview http plnkr co
  • 为什么这段代码不交换数字? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么这些交换函数的行为不同 https stackoverflow com questions 4330929 why do these swap functions behave differen
  • 如何消除错误 3002?

    假设我在 SQL Server 2008 中有以下表定义 CREATE TABLE Person PersonId INT IDENTITY NOT NULL PRIMARY KEY Name VARCHAR 50 NOT NULL Man
  • Mongoose 在结果的 _id 字段中返回“new ObjectId”

    当我尝试查询时 结果包含 id其中包含 new ObjectId 的字段 如何避免这种 new ObjectId 并仅将哈希值包含为字符串 由于此问题 将数据作为 JSON 响应发送回失败 下面是一个基本的demo 我的查询代码 book
  • 从 google 地图 api 隐藏本地列表

    当使用谷歌地图 API 显示某些内容时 谷歌已开始将当地餐馆 酒店添加到地图中 我怎样才能隐藏它们不出现 我在使用地图的网站 例如 yelp 上检查了相同的位置 他们成功地隐藏了当地的酒店 餐厅 我一直在寻找图层 叠加层 但无法弄清楚如何删
  • 仅选择一半记录

    我试图弄清楚如何选择 ID 为空的一半记录 我想要一半 因为我将使用该结果集来更新另一个 ID 字段 然后我将使用该 ID 字段的另一个值更新其余部分 所以本质上我想用一个数字更新一半记录 someFieldID 用另一个数字更新其余记录
  • Angular UI Grid - 将图像导出为 pdf

    我想将图像添加到 pdf 的标题中 我正在尝试添加已转换为 base64 的图像以导出 Pdf 标题 scope gmGrid exporterPdfHeader margin 30 5 30 15 table widths body MC
  • 如何根据值复制Azure数据工厂中的数据?

    我的问题是这样的 例如 我有一个包含三列的表 其中 SQL Server table1 id number1 number2 和 other table2 id finalNumber 我怎样才能进行有条件复制 我想复制 table2 fi
  • 禁用“未找到匹配项”文本并在 select2 上自动完成

    如何在 select2 Tagging 支持的自动完成功能上禁用 未找到匹配项 文本 这就是我现在所拥有的 ProductDescriptions 30 keywords select2 tags tokenSeparators minim
  • Safari 中的按钮是否损坏?

    我有一些带有单行文本的按钮 我们称它们为short 我还有其他带有多行文本的按钮 我们称它们为long 在 Chrome 中 所有按钮看起来都很好并且相同 但在 Safari 中 long看起来不同于short long看起来像是被压住了
  • 不同大小组的高效递归随机抽样

    这个问题是我之前关于递归随机抽样问题的后续问题高效的递归随机采样 https stackoverflow com questions 69824065 efficient recursive random sampling 当组大小相同或每