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