使用id变量进行采样

时间:2014-01-20 15:21:42

标签: r sampling

我知道如何使用R:

进行普通的随机抽样
mysample <- mydata[sample(1:nrow(mydata), 100),]

但是,我想通过id变量进行采样。让我解释一下 - 我的数据集看起来像这样:

id var1 var2 ...
1  5.1  1.2
1  4.7  0.9
2  3.3  1.6
3  3.4  5.7
4  7.9  1.3

现在,我想通过id号随机抽取一个例如2的样本。假设随机样本产生id 1和4,那么我的样本将如下所示:

id var1 var2 ...
1  5.1  1.2
1  4.7  0.9
4  7.9  1.3

换句话说,我正在抽取2个身份证号码,但我实际上得到了3个案例。

我如何在R?

中完成此任务

1 个答案:

答案 0 :(得分:4)

您的数据:

mydata <- read.table(text = "id var1 var2 
1  5.1  1.2
1  4.7  0.9
2  3.3  1.6
3  3.4  5.7
4  7.9  1.3", header = TRUE)

示例两个id值:

set.seed(1)
ids <- sample(unique(mydata$id), 2) # important: the UNIQUE id numbers
# [1] 2 4

提取子集:

mydata[mydata$id %in% ids, ]
#   id var1 var2
# 3  2  3.3  1.6
# 5  4  7.9  1.3