問題タブ [stata-macros]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1482 参照

stata - 変数名の一部をループするにはどうすればよいですか?

ローカル マクロを使用して、Stata の変数名の一部をループする必要があります。

これが私がやろうとしたことです:

Stata は変数名全体を認識しません。

「phth」の後のアンダースコアを削除しても、マクロ名の後のものは認識されません。

foreach複雑なループは避けたい。

単純なマクロを使用するだけでこれを行う方法はありますか? ありがとう!

0 投票する
1 に答える
186 参照

stata - すべてのデータを読み取る Stata マクロ

次のdoファイルがあります。

毎月のデータがあり、このプログラムを実行して、dta各月のファイルを作成できます。

ただし、月と年ごとにいくつかの生データがあります。たとえば、2010 年から2012年まで、このdoファイルをJan, Feb, March, ... で実行できます。月ごとにファイルを取得するには、別の月にファイルが必要になるたびに変更する必要があります。AprilAprildta

ある種のマクロを介してこれを達成する方法を知りたいですか?

そのファイルに対応する月次ファイルのファイル名を参照するコードの周りにループを追加する何らかのコードdo

0 投票する
2 に答える
566 参照

stata - サブディレクトリの完全なリスト (サブディレクトリのサブディレクトリを含む) を取得するには?

何千もの市のフォルダーがあります (たとえばcity1city2などですが、実際にNewYorkBoston、 などの名前が付いています)。各フォルダには、さらに 2 つのサブフォルダが含まれています:landhouse.

したがって、ディレクトリ構造は次のようになります。

すべてのサブディレクトリの完全なリストを取得し、何らかの操作を行いたい (のようにimport excel)。この問題を処理するマクロ拡張機能があることは知っていますが、より深いものではなく、のようなサブディレクトリlocal list: dirのみを返すことができるようです。first tiercity_i

より具体的には、すべてのハウス フォルダー内でアクションを実行したい場合、どのようなワークフローが必要ですか?

私は自分の目標を達成するためにコードを書く最初の試みをしました:

次の点に問題があります。

とにかく、ディレクトリでは、成功せずに機能させるのに苦労しました。

このプロジェクトに関する別の投稿があります。


補足事項:

Nick が指摘しているように、問題を引き起こすのはバック スラッシュです。しかし、その点から移動すると、別の問題に遭遇します。たとえば、複雑なアクションを除いて、ループが機能するかどうかをテストしたいだけなので、次のコード スニペットを記述します。

ただし、画面上の結果は次のようになります。

コードは最初の都市で 1 ラウンドだけループするようですが、 には到達できませcity2city3。特にこの行で、問題のあるローカルの書き込みが原因であると思われますが、よくわかりません:

0 投票する
4 に答える
1273 参照

regex - 正規表現または subinstr() を使用してローカル マクロを消去する

_私の目的は、特定のローカルの fromと、単語の末尾にあるアンダースコアに続くすべての数字をきれいにすることです。単語の末尾のみにアンダースコアとそれに続く数字があるとします。

を使用subinstr()することで、削除したいことを指定できます_1(そして、おそらく別の数値をループします)。

regexm()とを調べてみましregexs()たが、コードの設定方法がよくわかりません。

これを解決するには複数の方法があるかもしれないことを理解しています。

見えない問題に対処する簡単な方法があるのではないでしょうか?

0 投票する
1 に答える
1059 参照

stata - マクロに最大量の文字列を自動的に割り当てる方法は?

私の質問のタイトルは少しあいまいかもしれません。

以前は、「サブディレクトリの完全なリストを取得」して、これらのサブディレクトリ内のファイルを Stata に読み込みたいと考えていました (この投稿この投稿を参照)。

@Roberto Ferrer のすばらしい提案のおかげで、私はほとんどこれを行うことができました。しかし、私は別の問題に遭遇しました。個別のファイルが非常に多いため、ローカル マクロの長さが上限に達しているようです。コマンドの実行後、local n: word countStata はエラー メッセージを送信します。

マクロ置換により、行が長すぎます。

マクロを置換した結果の行は、許可されているよりも長くなります。最大許容長は 645,216 文字です。これは、セット maxvar に基づいて計算されます。これは、Stata/SE および Stata/MP で変更できます。以下は、Stata/SE または Stata/MP を使用している場合にのみ該当します。

行の最大長は、マクロの最大長 (現在は 645,200 文字) よりも 16 文字長く定義されています。set maxvar の単位が増加するたびに、長さの最大値が 129 ずつ増加します。set maxvar の最大値は 32,767 です。したがって、maxvar を最大値に設定すると、行の最大長は 4,227,159 文字まで設定できます。

r(920);

サブディレクトリの数を 5 に減らすと、Stata は正常に動作します。およそ 100 のサブディレクトリがあるので、アクションを 20 回複製するとします。まあ、それは管理可能ですが、このプロセスを完全に自動化できるかどうか、より具体的には、最大許容マクロ長を「使い果たす」ことができるかどうか、ファイルをインポートして次回サブディレクトリの別のグループを追加できるかどうかを知りたいです。

以下に私のコードを見つけることができます:

ありがとうございました。

0 投票する
2 に答える
77 参照

loops - 古いマクロの単語をプレフィックスとして新しいマクロを生成する

マクロを定義しtryます :

これにより、値を持つマクロが生成されますa b c

try2ここで、値を取る新しいマクロが必要ですda db dc。つまり、古いマクロの各要素に同じプレフィックスを追加して、新しいマクロとして定義したいのです。

0 投票する
2 に答える
1912 参照

loops - ローカル マクロでワイルドカードを使用して変数をループする

次の名前の変数のデータセットがあるとします ( と のスタブに注意してくださいx) hm

変数名のリスト (ワイルドカードを含む場合があります) を提供するプログラムによる方法を開発し、各変数名をrecode0 未満のすべての値と欠損値 ( .) にループします。

実際には、私は多くの列を持っておりrecode、そのうちのいくつかだけを必要としています。データが大きいため、列のインデックスや範囲がわからないため、それらを使用したくありません。

私のアプローチには、次の手順が含まれます。

  1. myvarsワイルドカードを含む変数名を含むという名前のローカル マクロを作成します。

    /li>
  2. 変数リスト内の文字列を展開して、完全な変数名文字列を含めます (これにより、元の変数名が生成されます)。

    /li>
  3. 変数名のリストをループして、値を欠落に設定します。

    /li>

forただし、ワイルドカードをループに含める方法がわかりません。上記のコードは機能せず、invalid syntaxエラーが発生します。

私は、Statalist の次のスレッドが役立つことを発見しましたが、それらは解決策を提供しておらず、スタブの使用は効率的ではないようです。

誰でも私を助けることができますか?