1

現在、次のようなコードがあります。

replace fname = "JACK" if id==103
replace lname = "MARTIN" if id==103

replace fname = "MICHAEL" if id==104
replace lname = "JOHNSON" if id==104

そして、ID 名を姓と名の文字列に置き換えて、このように複数のページに進みます。おそらくrecodeコマンドを使用して、これをまとめて行うより効率的な方法があるかどうか疑問に思っていましたか?

4

3 に答える 3

1

mergeこれを行うには aが最善の方法であることを示唆する他の回答を繰り返します。

しかし、絶対に行をアイテムごとにコーディングしなければならない場合 (これも面倒です)、replaceMS Excel を使用してコマンドの長いリスト (「ページ」) を生成し、コードの記述を「支援」することができます。これは、MS Excel の数式を示す、1 つの例を含む Excel シートの写真です。

        columns:
          A         B      C     D
row: 1  last      first    id   code
     2  MARTIN    JACK    103   ="replace fname=^"&B2&"^ if id=="&C2

それを入力し、数式が計算されるときに (キャレットを除いて) Stata コードのように見えることを確認し、列 D の数式をリストの最後までコピーします。次に、式によって生成された列 D の Stata コードのブロック全体を do ファイルにコピーし、置換するすべての ^ に対して検索と置換を実行します (数学的な用途で他の場所でキャレットを使用している場合は注意してください!!)。これにより、適切な Stata 構文が生成されます。

(これは本当に強引な方法であり、世代リストにその後の変更があった場合にはあまり動的ではありません。Excel の使用を推奨する質問にここで回答することをお詫びします :) )

于 2013-10-01T23:01:57.767 に答える
0

追加したい文字列がどこから来たのかは説明しませんが、一般的に最良のテクニックは何ですか?

http://www.stata.com/support/faqs/data-management/group-characteristics-for-subsets/index.html

于 2013-09-30T07:50:56.613 に答える
0

ID と Fname、Lname の連想配列を作成する

103 => JACK,MARTIN
104 => MICHAEL,JOHNSON
...

id => hash{id} ( fname & lname ) を置き換えます

これを行う効率は、使用するプログラミング言語によって決まります。

于 2013-09-30T06:32:32.613 に答える