2017-04-10 24 views
0

私は最初のStataプロジェクトに取り組んでおり、何百もの変数を含む約30の膨大なデータセットがあります。私はそれらのそれぞれを通過するループが必要です、私が興味を持っている変数だけを保持し、縮小されたフォームデータセットをどこかに保存します。他の多くの人が元のソースを上書きしたいので、私のために元のデータセットは変更されず、出力を他の場所で保存することが重要です。 2.私は比較的新しいので、私は文法ミスを犯したと思います。ここでデータセットをループし、特定の変数を保持し、別の場所に出力を保存します。

は、私がこれまでにエラーに 無効な構文 R(198)結果の

cd Y:\MAIA\Data\Data2014\ 

foreach file{ 
keep nopnltNF NumMois ptwa Qu cvwp ctwpenwp 
sort nopnltNF NumMois 
save `file'.dta in Y:\MAIA\MyName\test_folder} 

を生産してきたものです。

+0

'foreach file'は許可されている構文パターンのいずれにも当てはまりません。キーワードとして 'in'または' of'が常にあります。それを超えて、これを行う前にデータを読みましたか? –

+0

@NickCoxいいえ、私は自分のテストファイルを開いていましたが、ここで言及しましたが、ループがすべてのデータセットを1つずつ開くように何かをする必要があります。 私はしかし、それはまた...出力として「無効」WD { 使用'file」 で foreachのファイルを私に与え、これはそれの世話をするべきだと思います。 NumMois ptwa Qu cvwp ctwpenwp を保持してください。ソートnopnltNF NumMois Y:\ MAIA \ MyName \ test_folderに 'file'.dtaを保存} – GaiusBaltar

+0

ループは害はありませんが、' use wd'で始まる1つのファイルをループするだけです。 'save'コマンドが間違っていることに注意してください。 –

答えて

1

Stataファイルのリストを取得し、それらのファイルをループする方法の1つです。

append using `datasets', keep(foo bar) 

これは、メモリ内の1つのデータセットを生成します:

// get a list of all Stata files in directory 
loc datasets : dir . files "*.dta" 

// location for transformed files 
loc newplace "tmp" 

// loop over each dataset 
foreach f of local datasets { 
    di as result "Reading `f'" 
    use "`f'", clear 
    keep nopnltNF NumMois ptwa Qu cvwp ctwpenwp 
    sort nopnltNF NumMois 
    save "`newplace'/`f'" 
} 

しかしは、appendは、すでに複数のデータセットを処理し、keepオプションを持っていることに注意してください。

関連する問題