【发布时间】:2017-02-02 04:27:04
【问题描述】:
我想从 data.frame 中随机抽取行样本,将函数应用于子集,然后从剩余行中抽取样本,将函数应用于新子集(使用不同的参数),等等上。
一个简单的例子是,如果每个月有 5% 的人口死亡,那么在第 2 个月,我需要人口减去在第 1 个月时间死亡的人口。
我已经整理了一个非常详细的方法来执行此操作,其中包括我从采样行中保存 ID,然后从第二个时期的数据中将它们子集化,等等。
library(data.table)
dt <- data.table(Number=1:100, ID=paste0("A", 1:100))
first<-dt[sample(nrow(dt), nrow(dt)*.05)]$ID
mean(dt[ID %in% first]$Number)
second<-dt[!(ID %in% first)][sample(nrow(dt[!(ID %in% first)]),
nrow(dt[!(ID %in% first)])*.05)]$ID
mean(dt[ID %in% c(first,second)]$Number)
dt[!(ID %in% first)][!(ID %in% second)] #...
显然,这在过去几个时期内是不可持续的。这样做的更好方法是什么?我想这是一种标准方法,但想不出具体要寻找什么。感谢您的所有意见。
【问题讨论】:
-
那很好,但我怎样才能生成如上所述的那些组?也就是说,来自初始总体的一个随机子集,然后是来自总体减去子集 1 的另一个随机子集,等等。
-
想想你的实际问题是什么。你真的想模拟 (a) 正好 5% 的人口死亡或 (b) 人口中每个成员死亡的概率为 5%?或者,您是否想将每个成员视为一个部分生命,并将每个人仍然活着的概率向前推进?
-
嗯,这不是我真正想要的,只是一种简单的构图方法。无论哪种方式,我是否仍然需要在每个时间段从我的人口中删除“死”观察?你能指出一些相关的事情吗?
标签: r data.table