【发布时间】:2015-06-06 05:32:02
【问题描述】:
假设我的数据结构如下:
country population
1 Afghanistan 30000000
2 Brazil 200000000
3 Cameroon 22250000
这里共有 2.522 亿人。假设我想随机选择一个人:
i <- sample (1:sum(df$population))
然后报告她的国家。如何找到与个人 i 对应的国家行?我知道经验法则是通过数据框进行迭代意味着您做错了什么,但是(除了创建一个每个人一行的新列表,这听起来很糟糕)我想不出一个好的方法来计算找出个人 i 在人群中的位置。
【问题讨论】:
-
您可以对行进行采样,即
indx <- sample(nrow(df1),1),并将其用作索引来对行进行子集化。即df1[indx, ] -
可以指定权重为
sample(),即with(mydata, sample(country,1,prob=population)) -
@akrun:我相信这给了我以相等概率采样的数据帧中的一行,这不等于以相等概率选择其中一个个体。
-
这就是 MrFlick 的建议所做的。它使抽样国家的概率与其人口成正比。
-
确实如此。如果将 MrFlick 的格式设置为答案,我会给他打勾以正确地归功于他,但我已经标记了您的扩展版本。
标签: r sample weighted population