2016-11-17 1 views
0

번호가 매겨진 변수 목록을 만들려는 변수 목록이 있습니다. 이 데이터를 사용하여 스택 된 데이터 세트를 작성하려면 reshape 명령과 함께 사용하십시오. 나는 어떻게 그들을 질서있게 유지할 수 있는가? 예를 들어,이 코드foreach 명령을 사용하여 번호가 매겨진 변수 이름 만들기

local ct = 1 
foreach x in q61 q77 q99 q121 q143 q165 q187 q209 q231 q253 q275 q297 q306 q315 q324 q333 q342 q351 q360 q369 q378 q387 q396 q405 q414 q423 { 
    gen runs`ct' = `x' 
    local ct = `ct' + 1 
} 

와 I는 reshape 명령은 원하는

runs01 runs02 runs03 ... runs26 

보다는

runs1 runs10 runs11 ... runs2 runs22 ... 

같은 순서로 순서를 보존하는이 분석에 필요한 생성 사용할 때 . 변수 이름을 지정할 때 모든 ct 값에 10보다 작은 선행 0을 추가하려고합니다.

+0

로컬 매크로 디스플레이 (및 다른 텍스트 : 간결하게 유지하고 영업권을 상정 함)를 편집했습니다. 역 따옴표를 사용하면 Stata 로컬 매크로 참조에 대한 리터럴 백틱을 표시하고자 할 때마다 들여 쓰기를 사용하여 구문을 표시 할 수 있습니다. (백틱을 벗어나는 또 다른 해결책이 있지만 여기에서 들여 쓰기가 더 쉽습니다.) –

답변

2

앞에 오는 0이 붙은 일련의 식별자를 생성하는 것이 문서화되어 있으며 해결 된 문제입니다. here. 내가 rename보다는 generate을 사용

local j = 1 
foreach v in q61 q77 q99 q121 q143 q165 q187 q209 q231 q253 q275 q297 q306 q315 q324 q333 q342 q351 q360 q369 q378 q387 q396 q405 q414 q423 { 
    local J : di %02.0f `j' 
    rename `v' runs`J' 
    local ++j 
} 

참고. 나중에 reshape 변수를 사용하면 내용을 복사하는 수고가 들지 않습니다. 실제로 generate에서 사용하는 숫자 변수의 기본값 인 float은 경우에 따라 정밀도를 떨어 뜨릴 수 있습니다.

과 함께 해결책이있을 수 있습니다.

모든 말로는 reshape이 수행하는 (또는 수행하지 않는) 것에 대한 불만 사항을 따르기가 어렵습니다. 당신이 runs* 같은 일련의 변수가있는 경우 가장 확실한 reshape이있는 reshape long 예를 들어

clear 
set obs 1 
gen id = _n 

foreach v in q61 q77 q99 q121 q143 { 
    gen `v' = 42 
} 

reshape long q, i(id) j(which) 

list 

    +-----------------+ 
    | id which q | 
    |-----------------| 
    1. | 1  61 42 | 
    2. | 1  77 42 | 
    3. | 1  99 42 | 
    4. | 1  121 42 | 
    5. | 1  143 42 | 
    +-----------------+ 

나를 위해 잘 작동; 열 순서 정보가 유지되고 rename의 사용은 전혀 필요하지 않습니다. 접미사를 1 위로 매핑하려면 egen, group()을 사용할 수 있습니다.

재현 가능한 예제 없이는 논의하기가 어렵습니다. 좋은 코드 예제를 게시하는 방법은 https://stackoverflow.com/help/mcve을 참조하십시오.

+0

Nick, 숫자 형식에 대해서는 생각하지 않았습니다. 그건 잘된거야. 감사. 나는 해결책을 찾았지만 아무것도 발견하지 못했다. 재구성에 대한 불만에서 나는 아무 것도 가지고 있지 않았다. 그것이하는 일을합니다. 많은 감사합니다! – Steve

+1

Noted. 접미어에 앞뒤의 0을 붙이려는 경우이를 보존하기 위해'reshape'의'string' 옵션이 필요하다는 것을 덧붙여 야합니다! –

+0

고맙습니다 닉! – Steve

관련 문제