【发布时间】:2019-11-18 11:44:21
【问题描述】:
我有一个包含 10,000,000 行和 5 列的数据框 A,如下所示:
SNP REC AF X Y Z
rs1 2.3 0.22 sss ff 472
rs200 4.7 0.7 d tg 634
rs33 30.1 0.5 ddf ap 929
使用 R,我想生成 50 个新数据帧,其中包含 A 中的所有列,按以下方式循环前 50 行。
对于 REC,AF 列中的每个 i,j,从满足以下 2 个条件的 A(带放回抽样)中选择 1000 个随机行:
1) i-2.5 < i < i+2.5 # i = value in REC
2) j-0.05 < j < j+0.05 # j = value in AF
例如;对于第 1 行:在 A 中选择 1000 个随机行,其中 REC 介于 -0.2 和 4.8 之间,AF 介于 0.17 和 0.27 之间;对于第 2 行:在 A 中选择 1000 个随机行,其中 REC 介于 2.2 和 7.2 之间,AF 介于 0.65 和 0.75 之间; ...对于第 50 行:...;等等
我知道如何使用示例函数:
A[sample(nrow(A), 1000,replace = TRUE), ]
但我不知道如何自动化该功能。
非常欢迎任何建议!
【问题讨论】:
-
不清楚。
i是REC中的每个值?你能显示预期 daatframe 的前几行吗? -
嗨@RonakShah。是的,i 适用于 REC 中的每个值(循环遍历 A 的前 50 行,但从整个 A 中采样满足 2 个条件的行)。请参阅编辑。谢谢!
标签: r dataframe random conditional-statements