【发布时间】:2015-07-15 19:22:47
【问题描述】:
还有其他关于使用其他语言随机选择行的线程,此外,我的问题涉及如何从每个随机选择的行的列中定义变量。
首先我导入我的数据:
proc import OUT = WORK.ROWS
DATAFILE = "C:\rows.xlsx"
DBMS = EXCEL REPLACE; GETNAMES = YES;
run;
proc print;
run;
它由 10 行组成,每行在不同的列中包含一对两个变量 (var1, var2)。它看起来像这样:
obs var1 var2
1 0.8828 0.2245
2 0.8833 0.3109
3 0.8699 0.1579
4 0.9035 0.2993
5 0.9641 0.3590
6 0.8846 0.2542
7 0.8752 0.1343
8 0.9309 0.1188
9 0.9018 0.1761
10 0.8832 0.1439
然后,在 DO 循环中,
DO n = 1 TO 1000; *number of simulations to run;
我想从输入数据文件中随机抽取一个单行,并从我随机抽取的行中复制两个变量的值(var1和var2)以便在同一个 DO 循环中进一步使用。换句话说,对于 DO 循环的每次迭代,我都需要定义一对源自同一行的新随机变量。
例如,对于 var1 和 var2 的模拟 n = 1 到 n = 4 的随机值可能来自 obs(行)2、2、10、4:
Simulation #
n = 1
var1 = 0.8846
var2 = 0.2542
n = 2
var1 = 0.8846
var2 = 0.2542
n = 3
var1 = 0.9309
var2 = 0.1188
n = 4
var1 = 0.8832
var2 = 0.1439
提前感谢您的帮助。
【问题讨论】:
-
我认为你在这里解释得不够充分。但是,我会先看看Don't be LOOPy - 看看这是否能回答你的问题。这假设你正在做一些类似引导分析的事情。如果这不能回答您的问题 - 那么我建议您制作一个“想要”数据集,该数据集具有您想要从运行
DO n=1 to 30或其他合理的东西中获得的结果。 -
谢谢@Joe,我试图澄清一下我的问题。感谢您向我指出不要 LOOPy。我不确定它是否能回答我的问题,但我会再看一遍。
-
那么,你想要像上面这样的 1000 行吗?在这种情况下,您正在使用替换进行采样,而 Don't Be LOOPy 可以向您展示这一点。 (真的,这是一个 n=1000 samplesize=1 的引导程序,或者是一个 n=1 samplesize=1000 的引导程序——不确定是哪个。)
标签: sas