2014-06-10 3 views
1

나는 STATA 학습과 (교체하지 않고) 무작위 정수를 생성하는 방법을 알고 싶어하고있다. 총 행 수가 10 개인 경우 각 행에 1에서 10까지의 고유 한 정수를 할당해야합니다.STATA - 생성하는 방법을 임의의 정수

sample(1:10, 10) 

을하지만 STATA에서 할 더 어려운 것 같다 R에서, 하나는 간단하게 할 수 있습니다. this Stata page에서, 나는 보았다 교체와

generate ui = floor((b-a+1)*runiform() + a) 

나는 = 1, B = 10, 내가 원하는에 가까운 무언가를 얻을 대체하지만, 경우 샘플을. 그 부분을 점점 알아 낸 후

, 나는 다음과 같은 주름을 처리 할 방법 : 내 데이터는 쌍으로. 예를 들어, 10 관측에는 2의 5 개의 그룹이 있습니다. 2의 각 그룹에는 고유 식별자가 있습니다. 그룹을 임의의 순서로 (관측치가 아닌) 정렬하는 방법은 무엇입니까? 데이터는 다음과 같이 보일 것입니다 :

obs group mem  value 
1  A  x  9345 
2  A  y  129 
3  B  x  251 
4  B  y  373 
5  C  x  788 
6  C  y  631 
7  D  x  239 
8  D  y  481 
9  E  x  224 
10 E  y  585 

obs는 관측 번호입니다. group은 관찰 (행)이 속한 그룹입니다. mem은 그룹의 구성원 식별자입니다. 각 그룹은 하나의 x과 하나의 y을 포함합니다.

+1

당신은 또한 STATA 블로그 시리즈의 _part 2_을 읽을 수 있습니다 http://blog.stata.com/2012/08/03/using-statas-random-number-generators-part-2-drawing-without-replacement/ –

답변

4

첫 번째 질문 :

관찰 식별자를 섞어도됩니다.

set obs 10 
gen y = _n 
gen rnd = runiform() 
sort rnd 

또는 마타

jumble(1::10) 

두 번째 문제

: 여러 가지 방법. 여기에 하나 있습니다.

gen rnd = runiform() 
bysort group (rnd): replace rnd = rnd[1] 
sort rnd 

일반 설명 : 재현성을 위해 미리 임의 번호 시드를 설정하십시오.

set seed 2803 

또는 무엇이든.

+0

두 번째 질문에 대한 해결책에서 왜 bysort 문에 (rnd)를 포함시켜야합니까? 우리가 그걸 버릴 수 있을까요? – bill999

+1

예; 그것은 그것을하는 또 다른 방법이 될 것입니다. –

관련 문제