Size: 2075
Comment:
|
Size: 4190
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
Stata supports a '''macro''' programming language. |
|
Line 78: | Line 80: |
properties | ||'''Name''' ||'''Returns''' || ||`properties` ||properties of a [[Stata/Programs|program]] || ||`results` ||results class of a [[Stata/Programs|program]] || ||`type` ||[[Stata/DataTypes|data type]] of a variable || ||`format` ||[[Stata/DataFormats|data format]] of a variable|| ||`value label` || || ||`variable label` ||label of a variable || ||`data label` || || ||`sortedby` || || ||`label` || || ||`constraint` || || ||`char` || || ||`permname` || || ||`adosubdir` || || ||`dir` || || ||`sysdir` || || ||`environment` ||name lookup from environment variables || ||`e()` ||names in [[Stata/StoredResults#E_Class|e()]] || ||`r()` ||names in [[Stata/StoredResults#R_Class|r()]] || ||`s()` ||names in [[Stata/StoredResults#S_Class|s()]] || ||`all globals` ||pattern lookup of global macros || ||`all scalars` ||pattern lookup of [[Stata/Scalars|scalars]] || ||`all numeric scalars`||pattern lookup of numeric scalars || ||`all string scalars` ||pattern lookup of string scalars || ||`all matrices` ||pattern lookup of [[Stata/Matrices|matrices]] || ||`display` || || ||`list` || || ||`rownames` || || ||`colnames` || || ||`rowfullnames` || || ||`colfullnames` || || ||`roweq` || || ||`coleq` || || ||`rownumb` || || ||`colnumb` || || ||`roweqnumb` || || ||`coleqnumb` || || ||`rownfreeparms` || || ||`colnfreeparms` || || ||`rownlfs` || || ||`colnlfs` || || ||`rowsof` || || ||`colsof` || || ||`rowvarlist` || || ||`colvarlist` || || ||`rowlfnames` || || ||`collfnames` || || ||`tsnorm` || || ||`copy local` ||copy a local macro's value || ||`copy global` ||copy a global macro's value || ||`word` || || ||`piece` || || ||`strlen` || || ||`ustrlen` || || ||`udstrlen` || || ||`subinstr` || || |
Line 80: | Line 137: |
results | Note that the `e()`, `r()`, and `s()` functions expect an argument of `scalars`, `macros`, `matrices`, or `functions`. |
Line 82: | Line 139: |
type | ---- |
Line 84: | Line 141: |
format | |
Line 86: | Line 142: |
value label | |
Line 88: | Line 143: |
variable label | == See also == |
Line 90: | Line 145: |
data label | [[https://www.stata.com/manuals/pmacro.pdf|Stata manual for macros]] |
Line 92: | Line 147: |
sortedby | |
Line 94: | Line 148: |
label constraint char permname adosubdir dir sysdir environment e() r() s() all globals all scalars all matrices display list rownames colnames rowfullnames colfullnames roweq coleq rownumb colnumb roweqnumb coleqnumb rownfreeparms colnfreeparms rownlfs colnlfs rowsof colsof rowvarlist colvarlist rowlfnames collfnames tsnorm copy local copy global word piece strlen ustrlen udstrlen subinstr |
Macros
Stata supports a macro programming language.
Local Macros
Local macros are declared with the local command, and only exist in the local scope.
local stringvars var1 var2 destring `stringvars', force
To loop over words in a local macro, see here.
Note that looping creates local macros to store the current word. These local macros are accessed in the same manner
foreach v of local stringvars { destring `v', force }
Global Macros
Global macros are declared with the global command. Otherwise, the grammar and rules are exactly the same as local macros.
global COHORT 1
Generally these are discouraged, because their very nature (i.e. globally available) creates side-effects.
To loop over words in a global macro, see here.
Expressions
If a macro definition includes an equals sign (=), then what follows is evaluated as an expression.
. local count1 = _N . local count2 _N . display "`count1' vs. `count2'" 100 vs. _N . display "`count1' vs. " `count2' 100 vs. 100
Functions
If a macro definition includes a colon (:), then what follows is a macro function.
local cohorttype: type cohort if (strpos("`cohorttype'","str")>0) { destring cohort, replace }
Name |
Returns |
properties |
properties of a program |
results |
results class of a program |
type |
data type of a variable |
format |
data format of a variable |
value label |
|
variable label |
label of a variable |
data label |
|
sortedby |
|
label |
|
constraint |
|
char |
|
permname |
|
adosubdir |
|
dir |
|
sysdir |
|
environment |
name lookup from environment variables |
e() |
names in e() |
r() |
names in r() |
s() |
names in s() |
all globals |
pattern lookup of global macros |
all scalars |
pattern lookup of scalars |
all numeric scalars |
pattern lookup of numeric scalars |
all string scalars |
pattern lookup of string scalars |
all matrices |
pattern lookup of matrices |
display |
|
list |
|
rownames |
|
colnames |
|
rowfullnames |
|
colfullnames |
|
roweq |
|
coleq |
|
rownumb |
|
colnumb |
|
roweqnumb |
|
coleqnumb |
|
rownfreeparms |
|
colnfreeparms |
|
rownlfs |
|
colnlfs |
|
rowsof |
|
colsof |
|
rowvarlist |
|
colvarlist |
|
rowlfnames |
|
collfnames |
|
tsnorm |
|
copy local |
copy a local macro's value |
copy global |
copy a global macro's value |
word |
|
piece |
|
strlen |
|
ustrlen |
|
udstrlen |
|
subinstr |
|
Note that the e(), r(), and s() functions expect an argument of scalars, macros, matrices, or functions.