Saturday, February 25, 2012

Stata pengolahan file data dalam jumlah besar

Bila anda mempunyai file database stata (.dta) dalam jumlah besar dan ingin di proses secara otomatis dengan menggunakan do file maka dapat menggunakan perintah gabungan yang berada di stata dan windows batch seperti berikut ini (contoh dibawah ini digunakan untuk menghilangkan suatu variabel dari semua file database yang ada)
cd C:\DATA\FILES\
Perintah di atas digunakan untuk membuka direktori di mana file database anda di simpan

!dir *.dta /a-d /b >
C:\DATA\FILES\dtalist.txt, read
Perintah berikutnya ini merupakan perintah "dir" windows batch yang dijalankan di stata dengan awalan "!" digunakan untuk mendaftar seluruh nama file dengan format stata "*.dta" yang terdapat di dalam direktori dimana file database anda berada. 
Seluruh nama file kemudian akan disimpan dalam daftar dengan nama file dtalist.txt , daftar nama file ini akan dipergunakan sebagai daftar file yang akan di proses oleh stata
file open myfile using C:\DATA\FILES\dtalist.txt, read
Stata akan membuka daftar nama file "dtalist.txt" dengan menggunakan perintah seperti di atas, perintah ini hanya menggunakan status read only
Stata akan menggunakan "myfile" sebagai sarana penyimpanan sementara daftar file dari dtalist.txt untuk proses berikutnya

file read myfile line
Perintah di atas digunakan untuk membaca daftar nama file dari "myfile" berdasarkan baris 

while r(eof)==0 {
Perintah berikut digunakan untuk membaca daftar nama file dari myfile secara baris per baris (dalam arti jika eof (end of file) "=0" tidak ditemukan maka stata akan tetap memproses perintah sampai akhir dari file (eof))
use `line' 
Perintah ini digunakan untuk menggunakan `line' baris dari dalam daftar myfile sebagai nama file (perhatikan tanda baca ` dan " stata menggunakan tanda baca ini sebagai penanda bahwa kata `line' digunakan sebagai nama file

capture confirm variable nom1
Perintah capture confirm di atas digunakan untuk mencari apakah ada variabel "nom1" di dalam file yang di proses   
if _rc == 0 {
Perintah if di atas merupakan perintah jika stata tidak menemukan error (dalam hal ini jika stata menemukan variabel nom1) maka perintah dalam if akan diaktifkan 
drop nom1
Perintah drop akan aktif jika stata menemukan variabel nom1 dan akan langsung menghilangkan variabel nom1 pada file dalam daftar myfile yang saat ini sedang di proses 
save `line' ,replace 
Perintah di atas digunakan untuk menyimpan hasil proses drop nom1 pada file yang sedang di proses dengan menyalin pada file yang sudah ada sehingga file tersebut sudah tidak mempunyai variabel nom1 lagi ketika di buka
file read myfile line
}
Perintah diatas digunakan untuk membaca nama file dari baris berikutnya dari daftar nama yang terdapat dalam myfile untuk di proses lagi
if _rc == 111 {
Perintah if diatas merupakan perintah jika stata menemukan error (dalam hal ini stata tidak menemukan variabel nom1) maka perintah dalam if di bawah ini akan diaktifkan 
file read myfile line
}
}
Perintah file read myfile line diatas digunakan untuk membaca nama file dari baris berikutnya dari daftar nama yang terdapat dalam myfile untuk di proses lagi
gabungan keseluruhan perintah dapat di susun seperti di bawah ini
 cd C:\DATA\FILES\
!dir *.dta /a-d /b >C:\DATA\FILES\dtalist.txt, read

file open myfile using C:\DATA\FILES\dtalist.txt, read

file read myfile line

while r(eof)==0 {

use `line' , clear

capture confirm variable nom1
if _rc == 0 {
drop nom1
save `line' ,replace
file read myfile line
}

if _rc == 111 {
file read myfile line
}
}
 

0 comments: