J'essaie de créer un fichier Excel automatisé qui documente le nombre d'observations perdues pendant la construction de mon exemple, en utilisant putexcel et un programme simple. Je suis novice en programmation, mais le programme ci-dessous fait l'affaire. Il stocke 4 macros globales pour chaque fois que je laisse tomber quelques observations: 1) Nombre d'observations abandonnées, 2) Part des observations abandonnées, 3) Nombre d'observations laissées dans l'ensemble de données et 4) une chaîne qui explique pourquoi je laisse tomber les observations.Programmation Stata et boucle putexcel
Pour exporter les résultats vers Excel, j'utilise la commande putexcel - qui fonctionne correctement. Le problème est que j'ai besoin de laisser tomber des observations beaucoup de fois dans le fichier et je me demandais si je pouvais intégrer la partie putexcel dans le programme pour le faire boucler sur les cellules. En d'autres termes, ce que je veux, c'est que le programme sauvegarde automatiquement la description ($ why) dans A1 la première fois, dans A8 la deuxième fois et ainsi de suite.
J'ai fourni un exemple de mon code ci-dessous:
** 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)