r - 有条件的两个数据表的随机抽样
问题描述
我试图在一个条件下对两个数据表进行采样,然后组合两个结果样本的列并复制这些步骤并将结果样本附加到一个新的数据表中。两个表的摘录(它们没有样本长度):
data1
month1 year
1: 1 2014
2: 2 2015
3: 3 2016
..
data2
month2
1: 4
2: 5
3: 6
..
第一个样本:
s1 = sample(data1[month = i ], 100, replace=TRUE)
从i
1 到 n
第二个样本:
s2 = sample(data2[month > i ], 100, replace=TRUE)
wherei
应该大于为 s1 选择的月份。
这两个样本应该组合在一个新的数据表中,例如dt1 = cbind(s1,s2)
我想每个月重复这些步骤,并使用所有结果样本(伪代码)创建一个新数据集:
for(i in 1:10){
s1_i = sample(data1[month = i ], 100, replace=TRUE)
s2_i = sample(data2[month > i ], 100, replace=TRUE)
new_i = cbind(s1_i,s2_i)
}
allsamples = rbind(new_1,new_2,new_3,...)
我在编写这个循环时遇到了麻烦,它不应该为每个步骤创建数据集,而应该只创建 allsamples 数据集,所有样本都在其中组合。
解决方案
这个怎么样?
allsamples <- NULL
for(i in 1:length(month)){
s1 <- sample(data1[month == i], 100, replace = TRUE)
s2 <- sample(data1[month > i], 100, replace = TRUE)
allsamples <- rbind(allsamples, cbind(s1, s2))
}
设置后,您正在采样替换,这是您打算做的吗?
可能有更好的方法来做到这一点,因为增长的对象通常很慢,但是看到只有 12 个月的循环时间,我想它应该不会对你的性能造成太大影响。
推荐阅读
- python-2.7 - 如何使报告的页脚固定在底部
- odbc - ODBC MS 查询日期参数
- postgresql - 在选择 INSERT 或 UPDATE 时,Doctrine 是基于什么?
- python - 在python中动态删除日志文件
- apache-spark - Pyspark:Dstream 选择列
- c++ - 保存的 Gdiplus::Bitmap 始终具有 Alpha 通道 (RGBA/ARGB)
- regex - python 3正则表达式替换列表中的单词
- javascript - 如何从asp.net访问隐藏字段值到javascript
- python - 如何更改“id”字段的初始值?
- angular2-forms - 当其他表单域angular5表单验证发生变化时在表单域上触发