我試圖給一個組內的每個觀察分配一個相同的隨機數。因此,在下面的數據集中,變量「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