Fundamental Series — Part 7 of 20
Di Stata, “fungsi” disebut program. Kamu bisa menulis program sendiri yang dipanggil seperti perintah Stata bawaan.
Membuat Program
capture program drop sapa
program define sapa
display "Halo dari program Stata!"
end
sapa // Halo dari program Stata!
Catatan
capture program drop
Jika program sudah ada dan kamu ingin mendefinisikan ulang, harus di-drop dulu. capture memastikan tidak error jika belum ada.
Program dengan Arguments
Argumen diakses melalui syntax atau posisi (`1', `2', …):
Positional Arguments
capture program drop hitung_luas
program define hitung_luas
local panjang = `1'
local lebar = `2'
display `panjang' * `lebar'
end
hitung_luas 5 3 // 15
hitung_luas 10 7 // 70Dengan syntax
capture program drop ringkas
program define ringkas
syntax varlist [if] [in]
summarize `varlist' `if' `in'
end
sysuse auto, clear
ringkas price mpg
ringkas price mpg if foreign == 1syntax mem-parsing argumen secara otomatis — sangat powerful.
Return Values
Program bisa menyimpan hasil di r():
capture program drop statistik
program define statistik, rclass
syntax varname
quietly summarize `varlist'
return scalar mean = r(mean)
return scalar sd = r(sd)
return scalar n = r(N)
end
sysuse auto, clear
statistik price
display r(mean)
display r(sd)
return listProgram dengan Options
capture program drop celsius2f
program define celsius2f
syntax, Celsius(real)
local fahrenheit = (`celsius' * 9/5) + 32
display `celsius' "°C = " `fahrenheit' "°F"
end
celsius2f, celsius(100) // 100°C = 212°F
celsius2f, celsius(0) // 0°C = 32°FLatihan
BahayaLatihan 7.1 — Program Dasar
* 1. Buat program bmi yang menerima berat (kg) dan tinggi (m)
* dan menampilkan BMI = berat / tinggi^2
* 2. Test: bmi 70 1.75
BahayaLatihan 7.2 — Program rclass
* Buat program zscore, rclass yang:
* - Menerima varname
* - Menghitung mean dan sd
* - Return scalar mean dan sd
* - Buat variabel baru varname_z = (var - mean) / sd
BahayaLatihan 7.3 — Program dengan syntax
* Buat program ringkas_lengkap yang:
* - Menerima varlist dan opsional if
* - Untuk setiap variabel, tampilkan mean, sd, min, max
* - Test: ringkas_lengkap price mpg weight if foreign == 1Ringkasan
| Konsep | Keterangan |
|---|---|
program define |
Membuat program |
`1' `2' |
Positional arguments |
syntax |
Parsing argumen otomatis |
rclass |
Program yang return values ke r() |
return scalar |
Simpan return value |
capture program drop |
Hapus program (untuk redefinisi) |
Sebelumnya: Part 6 — Loop Selanjutnya: Part 8 — String & Teks