1

我需要从列表中取出一个受试者样本,将它们分配为一个必须具有相似变量组成的研究的对照组。我正在尝试使用示例函数在 R 中执行此操作,但我不知道如何为每个变量指定不同的概率。假设我有一个包含以下标题的表格:

ID 名称 活动性别

我需要一个包含 10 个主题的样本,其中包含以下 Campaign 属性组成:

D2D --> 25%

F2F --> 38%

商标 --> 17%

WW --> 21%

这意味着从我的数据集中,我有 25% 的主题来自门对门活动 (D2D),38% 来自面对面活动 (F2F) 等

性别构成如下:

男性 --> 54%

女性 --> 46%

当我获得 10 个主题的随机样本时,我需要它具有相似的组成。

我一直在寻找几个小时,我能得到的最接近的答案是这个答案:在 R 中采集数据样本, 但我需要分配多个概率。

我相信这可以帮助任何想要从数据集中获得代表性样本的人。

4

1 回答 1

8

听起来您对随机分层样本感兴趣。您可以使用包中的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, ]
于 2013-06-08T19:13:31.473 回答