我想采样一下,假设65岁以上的100个人的年龄, 年龄段的概率如下:
65-74<- 0.56
75-84<- 0.30
85<- 0.24
我知道示例函数的存在,我尝试如下进行操作,但是不幸的是,该方法没有起作用
list65_74<-range(65,74)
list75_84<-range(75,84)
list85<-range(85,100)
age<-sample(c(list65_74,list75_84,list85),size=10,replace=TRUE,prob =c(0.56,0.30,0.24 ))I get the following error
然后我得到以下错误
Error in sample.int(length(x), size, replace, prob) :
incorrect number of probabilities
所以我想知道从多个列表中采样的正确方法是什么。 提前非常感谢您!
答案 0 :(得分:1)
首先,让我将这三个对象称为 groups ,因为它们不使用list
函数。
您定义它们的方式可能不错,但是例如65:74
比c(65, 74)
更直接。因此,最终我将这三个组放在以下列表中:
groups <- list(group65_74 = 65:74, group75_84 = 75:84, group85 = 85:100)
现在使用sample
的第一个问题是您的x
参数值,
一个或多个可供选择的元素的向量,或者 正整数。参见“详细信息”。
与此同时,您x
只是
c(list65_74, list75_84, list85)
# [1] 65 74 75 84 85 100
最后,prob
的值不合适。您向6个候选样本的向量提供3个数字。听起来不对。相反,您需要为每个组的每个年龄分配适当的概率,如
rep(c(0.56, 0.30, 0.24), times = sapply(groups, length))
这样结果就是
sample(unlist(groups), size = 10, replace = TRUE,
prob = rep(c(0.56, 0.30, 0.24), times = sapply(groups, length)))
# [1] 82 72 69 74 72 72 69 70 74 70