2016-11-17 8 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 
} 

それは順序を保存むしろ所望

runs01 runs02 runs03 ... runs26 

より

runs1 runs10 runs11 ... runs2 runs22 ... 

として順序は、この分析に必要である生成reshapeコマンドを使用して。私はすべてのctの値に10より小さい先頭にゼロを付け加えようとしています。

+0

ローカルのマクロディスプレイ(および他のテキスト:それを簡潔に保ち、営業権を引き受ける)を編集しました。スタティックローカルマクロ参照のリテラルバッククォートを表示したい場合、バックティックの使用が衝突するたびに、シンタックス表示にインデントを使用します。 (別の解決策があり、バックティックをエスケープするが、ここでインデントするのがより簡単になる) –

答えて

2

先行ゼロの一連の識別子を生成することは、文書化されて解決された問題です。 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タイプは、場合によっては精度の低下を招く可能性があります。

また、rename groupsの解決策があることに注意してください。

これは、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

ニック、私は数字の形式については考えなかった。それは素晴らしい作品です。ありがとう。私は解決策を探しましたが、何も見つかりませんでした。私は改造に関する苦情については何も持っていませんでした。それは、それがすると思われることをします。どうもありがとう! – Steve

+1

注目。もしあなたがいくつかの(あるいはすべての)先行ゼロでサフィックスを主張するならば、それらを保持するために 'reshape'の' string'オプションが必要になるだろうということを付け加えておきます! –

+0

ありがとうNick! – Steve

関連する問題