3

ファイルのデータを分析するために Stata を使用してい.csvます。ディレクトリ内のすべてのファイルをinsheet一度に処理できるように、ループを作成しました。ここにあります:

cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
! dir *.csv /a-d /b > filelist.txt

* Looping through the filelist to transform all of them in .dta files
file open trial4 using "C:\Users\Monica\Documents\Tweet Archivist\csv2806\filelist.txt", read
file read trial4 line
while r(eof)==0 {
  cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
  insheet using `line', tab
  save `line'.dta, replace
  drop _all
  file read trial4 line
  }
file close trial4

私の問題は次のとおりです。この方法を使用すると、.csvファイル拡張子が Stata のファイル名に組み込まれるため、file1.csv.dta. これを防ぐ方法はありますか?ファイルを開いて手動で削除するだけなので、些細な質問に思えるかもしれませんが.csv、Stataですべてを行う方法があるかどうか知りたいです。DOS でコマンドを試してみましたrenameが、拡張子が削除され、Stata はファイルを として認識しません.csv

4

1 に答える 1

6

必要なのは、 に記載されているマクロ操作だけですhelp extended_fcn

同時に、Stata を使用してファイルのリストを取得する、より単純な方法をお勧めします。(Windows を使用していることはコードで明示されていますが、ここでのアプローチはクロスプラットフォームです)。

cd "C:\Users\Monica\Documents\Tweet Archivist\csv2806"
fs *.csv 

foreach f in `r(files)' { 
    insheet using `f', tab clear 
    local F : subinstr local f ".csv" "" 
    save `F'.dta, replace
}

ここでユーザーが作成したコマンドfsは、オペレーティング システムからファイル名を取得するための Stata ツールの便利なラッパーです。を使用ssc install fsして取り付けます。

呼び出しは、fs2 つ以上のワイルドカード ファイル指定を含む、より複雑になる可能性があります。詳細については、のヘルプを参照しfsてください。

于 2013-06-30T11:23:30.907 に答える