Part 6 — Kontrol Alur: Loop

forvalues, foreach, while, dan loop idiomatik di Stata.
Fundamental
Kontrol Alur
Diterbitkan

26 Februari 2026

Fundamental Series — Part 6 of 20

Loop di Stata digunakan di do-file dan program. Stata memiliki tiga jenis loop: forvalues, foreach, dan while.


forvalues — Loop Angka

forvalues i = 1/5 {
    display `i'
}
// 1 2 3 4 5

Variasi Syntax

* Increment
forvalues i = 0(10)50 {
    display `i'
}
// 0 10 20 30 40 50

* Countdown
forvalues i = 5(-1)1 {
    display `i'
}
// 5 4 3 2 1

foreach — Loop Over List

List Item

foreach kota in Jakarta Bandung Surabaya {
    display "`kota'"
}

Variable List

sysuse auto, clear

foreach var of varlist price mpg weight {
    summarize `var'
}

Macro List

local negara "Indonesia Malaysia Thailand Vietnam"

foreach n of local negara {
    display "`n'"
}

Numlist

foreach x of numlist 1 3 5 7 9 {
    display `x'^2
}
// 1 9 25 49 81
Catatanforvalues vs foreach
forvalues foreach
Untuk Range angka reguler List item, variabel, atau angka
Syntax forvalues i = 1/10 { } foreach x in a b c { }
Lebih cepat? Ya, untuk range sederhana Lebih fleksibel

while Loop

local x = 1
while `x' <= 5 {
    display `x'
    local x = `x' + 1
}

Contoh Praktis

* Cari threshold: berapa obs yang mpg > threshold?
sysuse auto, clear

local threshold = 15
local n = _N

while `n' > 30 {
    local threshold = `threshold' + 1
    count if mpg > `threshold'
    local n = r(N)
}
display "Threshold: `threshold', N = `n'"

continue dan break

Stata menggunakan continue (lewati) dan continue, break (hentikan):

forvalues i = 1/10 {
    if `i' == 5 {
        continue, break       // hentikan loop
    }
    display `i'
}
// 1 2 3 4

forvalues i = 1/10 {
    if mod(`i', 2) == 0 {
        continue              // lewati genap
    }
    display `i'
}
// 1 3 5 7 9

Contoh Praktis: Loop Analisis

Loop untuk Summary per Variabel

sysuse auto, clear

foreach var of varlist price mpg weight length {
    display _newline "=== `var' ==="
    summarize `var'
}

Loop untuk Membuat Variabel

sysuse auto, clear

foreach var of varlist price mpg weight {
    summarize `var'
    generate `var'_std = (`var' - r(mean)) / r(sd)
}

Loop untuk Baca Banyak File

local files "survey2020 survey2021 survey2022 survey2023"

foreach f of local files {
    use "data/`f'.dta", clear
    * ... proses ...
    save "output/`f'_clean.dta", replace
}

Kapan Pakai Loop di Stata?

Di Stata, loop lebih sering dibutuhkan dibanding R/Python karena:

  • Stata tidak punya vektorisasi general-purpose
  • Banyak task repetitif (summary banyak variabel, baca banyak file)
  • Simulasi dan bootstrap

Latihan

BahayaLatihan 6.1 — forvalues
* 1. Tampilkan bilangan 1-20 yang habis dibagi 3
* 2. Hitung jumlah bilangan 1-100 menggunakan loop
*    Verifikasi: display 100*101/2
BahayaLatihan 6.2 — foreach
sysuse auto, clear

* 1. Jalankan summarize untuk setiap variabel numerik:
*    price mpg rep78 headroom trunk weight length turn displacement gear_ratio
* 2. Untuk setiap variabel di atas, buat versi standarnya
*    (namavar_z = (var - mean) / sd)
BahayaLatihan 6.3 — while
* Simulasi random walk:
* Mulai dari posisi = 0
* Setiap step, posisi + 1 atau - 1 (random)
* Hentikan ketika posisi = 10 atau = -10
* Berapa step yang diperlukan?

set seed 42
local posisi = 0
local step = 0
* ... tulis while loop ...

Ringkasan

Konsep Sintaks Keterangan
forvalues forvalues i = 1/n { } Loop angka
foreach foreach x in a b c { } Loop over list
foreach of varlist foreach v of varlist x y { } Loop variabel
while whilex’ > 0 { }| Loop sampai FALSE | |continue|continue| Lewati iterasi | |continue, break|continue, break` Hentikan loop

Sebelumnya: Part 5 — Conditional Selanjutnya: Part 7 — Fungsi