2

1)stataで文字列のベクトルを作成することは可能ですか?2)はいの場合、このベクトル内の要素をループして、各要素に対してコマンドを実行することは可能ですか?

stataで単一の文字列を作成するには、次のようにします。

    local x = "a string"

しかし、ループする必要のあるデータファイルは約200あり、「_ 2000」、「_ 2001」、「_ 2002」などの連続したサフィックスで名前を付けるのは便利ではありません。実際、ファイル名に韻や理由はありませんが、それらのリストを用意して、簡単に切り取って文字列ベクトルに貼り付け、MATLABの場合と同様に、このベクトルの要素を1つずつ呼び出すことができます。

stataでこれを行う方法はありますか?

4

3 に答える 3

8

キースの答えに加えて、次のディレクトリ内のファイルのリストを取得することもできます。

    local myfilelist    : dir . files "*.dta"

またはより一般的に

    local theirfilelist : dir <directory name> files <file mask>

を参照してくださいhelp extended_fcn

于 2012-04-09T04:18:57.613 に答える
4

確かに-典型的な市内通話を使用してリストを作成するだけです。全体を引用符で囲まないと、リストが非常に長くなる可能性があります。

local mylist aaa bbb "cc c" dd ee ff 

次に、を使用しますforeach

foreach filename of local mylist {
  use `"`filename'"'
}

`" "'スペースのためにファイル名の1つが引用符で囲まれているため、二重引用符( )が使用されます。foreach filename in `mylist' {これは、最初の行を置くよりも速いタッチ です。

リストを操作する場合は、を参照してくださいhelp macrolists

関連する質問は、stackoverflowで1回以上尋ねられました:

于 2012-04-09T00:17:35.870 に答える
3

私のように、多くの人がこの2つの組み合わせを望んでいる可能性があります。ここにあります:

* Create a local containing the list of files. 
local myfilelist : dir "." files "*.dta"

* Or manually create the list by typing in the filenames.
local myfilelist "file1.dta" "file2.dta" "file3.dta"

* Then loop through them as you need.
foreach filename of local myfilelist {
  use "`filename'"
}

それがお役に立てば幸いです。ローカル/マクロは67,784文字に制限されていることに注意してください。ファイルのリストが非常に長い場合やファイル名が非常に長い場合は、このことに注意してください。

于 2013-06-02T13:12:29.970 に答える