我试图给一个组内的每个观察分配一个相同的随机数。因此,在下面的数据集中,变量“random”的值对于gp = B的每个观察值是相等的,并且对于其中gp = A的每个观测值将采用另一个值,依此类推。按组分配随机数
data test ;
input gp $ a b c ;
datalines;
B 2 2 3
B 2 2 3
A 1 2 3
A 1 2 3
C 3 3 4
C 3 3 4
;
愚蠢我试图创建用于基于共同的唯一值到每个组中的每个组不同的种子:
data test2 ;
set test ;
seed = a*b*c ;
random = ranuni(seed) ;
run ;
这产生每组一个共同的起点,但显然对于每个观测改变。
如何获得组中每个观察值的随机数?由于真实数据集非常大,我想避免任何排序或其他耗时的过程。因此
所需datset看起来是这样的:
data want ;
input gp $ a b c random ;
datalines;
B 2 2 3 0.123
B 2 2 3 0.123
A 1 2 3 0.456
A 1 2 3 0.456
C 3 3 4 0.789
C 3 3 4 0.789
;
数据是否按所示逻辑顺序显示? – Reeza
数据按每个组的ID排序。 – user2568648
如果你使用'ranuni'函数,更改种子并不会改变随机数字流。只有'调用ranuni'可以让你修改数据流中间步骤。那里的'seed'调用在第一行/迭代之后完全没有。 – Joe