首页 > 解决方案 > R中每个唯一列值的随机样本1行

问题描述

我有一个由 2 列iduniquematch_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因此我需要能够更改样本大小的解决方案。

标签: rdata.tabletidyverseplyrsample

解决方案


data.table我们可以做

library(data.table)
setDT(df)[df[, sample(.I, 1), match_no]$V1]

推荐阅读