我需要从一个列表中拿出一个样本,将他们作为一个控制组分配给一个必须有相似的变量组成的研究。我试图用样例函数在R中这样做,但我不知道如何为每个变量指定不同的概率。假设我有一个具有以下标题的表:
ID名称运动性别
我需要一个有以下竞选属性组成的10个科目的样本:
D2D -> 25% F2F -> 38% TM -> 17% WW -> 21%
这意味着根据我的数据,我有25%的受试者来自门到门运动(D2D),38%来自面对面运动(F2F),等等。
性别构成如下:
男性-> 54% 女性-> 46%
当我得到一个随机抽样的10个受试者,我需要它有一个类似的作文。
我已经搜索了几个小时,我能找到的最接近类似的答案是:taking data sample in R,但是我需要分配一个以上的概率。
我相信,这可以帮助任何想从数据集中获得有代表性的样本的人。
发布于 2013-06-08 19:13:31
听起来你对随机分层样本很感兴趣。您可以使用来自stratsample()包的survey函数来实现这一点。
在下面的例子中,我创建了一些假数据来模拟您拥有的数据,然后定义一个函数来接受随机比例分层随机样本,然后将该函数应用于假数据。
# example data
ndf <- 1000
df <- data.frame(ID=sample(ndf), Name=sample(ndf),
Campaign=sample(c("D2D", "F2F", "TM", "WW"), ndf, prob=c(0.25, 0.38, 0.17, 0.21), replace=TRUE),
Gender=sample(c("Male", "Female"), ndf, prob=c(0.54, 0.46), replace=TRUE))
# function to take a random proportional stratified sample of size n
rpss <- function(stratum, n) {
props <- table(stratum)/length(stratum)
nstrat <- as.vector(round(n*props))
nstrat[nstrat==0] <- 1
names(nstrat) <- names(props)
stratsample(stratum, nstrat)
}
# take a random proportional stratified sample of size 10
selrows <- rpss(stratum=interaction(df$Campaign, df$Gender, drop=TRUE), n=10)
df[selrows, ]https://stackoverflow.com/questions/17002101
复制相似问题