r - R中每个唯一列值的随机样本1行
问题描述
我有一个由 2 列idunique
和match_no
此处可重现的示例
idunique <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
match_no <- c(1, 1, 1, 1, 2, 2, 3, 3, 4, 5)
df <- data.frame(idunique, match_no)
idunique match_no
1 1
2 1
3 1
4 1
5 2
6 2
7 3
8 3
9 4
10 5
我需要从数据库中随机抽样 match_no 的出现并提取 x 数量的唯一出现。
示例输出将是idunique
基于随机抽样的随机子集match_no
idunique match_no
1 1
5 2
7 3
9 4
10 5
真正的数据库有 600 万行长,每个行有约 2000 个重复项,match_no
因此我需要能够更改样本大小的解决方案。
解决方案
,data.table
我们可以做
library(data.table)
setDT(df)[df[, sample(.I, 1), match_no]$V1]
推荐阅读
- julia - 是什么让 Julia 可组合?
- r - 将日期和时间从因子转换为R中的数字
- go - 如何使用 chromedp 修改 HTML 元素的属性
- python - Google Cloud Platform - 最终例外:b'[Errno 28] No space left on device') 用于下载
- javascript - 如何在点击时淡出图像
- string - 在 sqlite-jdbc 驱动(3.23 或 3.30)中,字符串过长时更新失败,无一例外。但是在命令行和navicat下就可以了
- angular - Angular Material 嵌套 Stepper 的标签位置被覆盖
- java - cmd突然关闭时如何确保Java程序创建的临时文件被删除
- c++ - C++ shared_ptr,如何从方法内创建的共享指针返回对对象的引用?
- python - python继承类函数