如何随机抽取多个观察变量

时间:2014-08-21 18:05:42

标签: r random unique sampling large-data

Rookie here - 我有大约75,000个观察数据和2000个唯一ID的大数据集。因此,每个ID有大约37个观察值。现在,我如何随机抽取唯一ID,例如4,这样我就有了一个新的数据框,其中包含4个随机唯一ID及其相应的观察结果,共计约150个观察值?

4 个答案:

答案 0 :(得分:6)

像这样:

df <- data.frame(id = gl(2000, 37), obs = runif(74000)) # Example data set
ids <- sample(levels(df$id), 4)
df.sub <- df[df$id %in% ids, ]

答案 1 :(得分:5)

library(dplyr)

## 4 is the subsample size
d_small <- ChickWeight %>% filter(Chick %in% sample(unique(Chick), 4)) 

答案 2 :(得分:3)

如果您没有一组有针对性的ID,那么您可以使用以下内容:

   theseIDs <- sample( unique(sample(dset$IDs, 100) ), 4)

您可能只需要少于100个样本来获取子样本,但由于唯一值不足,这似乎不太可能失败。

如果您打算从一组dset $ ID构建一个样本编号150,它代表4个特定ID的分布,其值为these_IDs,那么这可能是最简单的方法:

 samp150 <- sample( dset$IDs[ dset$IDs %in% theseIDs] , 150 ) 

如果您考虑重复此过程(或扩展到其他项目集),其他方法可能是使用相同名称的函数构造表格以获取概率,然后从theseIDs替换样本使用你桌子上的概率。

答案 3 :(得分:0)

这是一般方法。如果没有看到您数据框的一部分,则无法提供准确的说明。如果您的数据设置为m,其名称为ID,那么您可以执行类似

的操作
> idx <- sample(unique(m$ID), 4)
> m.reduced <- m[m$ID %in% idx, ]