如何解决R 中每个唯一列值的随机样本 1 行
我有一个由 2 列 idunique
和 match_no
此处可重现的示例
idunique <- c(1,2,3,4,5,6,7,8,9,10)
match_no <- c(1,1,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 万行,每个 match_no
有大约 2000 个重复,所以我需要能够改变样本大小的解决方案。
解决方法
有了data.table
,我们可以做到
library(data.table)
setDT(df)[df[,sample(.I,1),match_no]$V1]
,
df %>% group_by(match_no) %>% sample_n(1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。