我正在嘗試使用putexcel和一個簡單的程序來創建一個自動化的Excel文件,該文件記錄了在構建示例期間掉落的觀察次數。Stata編程和putexcel循環
我很新的編程,但下面的程序完成這項工作。它存儲4個全局宏,每次我放棄一些觀察結果:1)丟棄的觀察數量,2)觀察到的分享數量下降,3)留在數據集中的觀察數量,以及4)描述爲什麼我放棄觀察結果的字符串。
要將結果導出爲excel我使用putexcel命令 - 它工作正常。問題是我需要在dofile中多次刪除觀察結果,我想知道是否可以將putexcel部分合併到程序中以使其在單元中循環。
換句話說,我想要的是第一次在A1中第二次自動保存描述($ why)的程序,依此類推。
我已經提供了我下面的代碼示例:
** Generate some data:
clear
input id year wage
1 1 200
1 2 250
1 3 300
2 1 152
2 2 150
2 3 140
3 1 300
3 2 320
3 3 360
end
** Define program
cap program drop dropdata
program define dropdata
count
global N = r(N)
count if `1'
global drop = r(N)
global share = ($drop/$N)
drop if `1'
count
global left = r(N)
global why = "`2'"
end
** Drop if first year
dropdata year==1 "Drop if first year"
** Export to excel
putexcel set "documentation.xlsx", modify
putexcel A1 = ("$why")
putexcel A3 = ("Obs. dropped") A4 = ("Share dropped") A5 = ("Observations left")
putexcel B3 = ($drop) B4 = ($share) B5=($left)
** Now drop if wage is < 300
dropdata wage<300 "Drop if wage<300"
putexcel A8 = ("$why")
putexcel A10 = ("Obs. dropped") A11 = ("Share dropped") A12 = ("Observations left")
putexcel B10 = ($drop) B11 = ($share) B12 = ($left)