Differences between revisions 4 and 8 (spanning 4 versions)
Revision 4 as of 2023-02-15 20:00:04
Size: 1966
Comment:
Revision 8 as of 2023-06-09 18:17:56
Size: 4190
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

Stata supports a '''macro''' programming language.
Line 71: Line 73:
{{{
local cohorttype: type cohort
if (strpos("`cohorttype'","str")>0) {
  destring cohort, replace
}
}}}

||'''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` || ||

Note that the `e()`, `r()`, and `s()` functions expect an argument of `scalars`, `macros`, `matrices`, or `functions`.

----
Line 73: Line 142:
properties
Line 75: Line 143:
results == See also ==
Line 77: Line 145:
type [[https://www.stata.com/manuals/pmacro.pdf|Stata manual for macros]]
Line 79: Line 147:
format
Line 81: Line 148:
value label

variable label

data label

sortedby

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.


See also

Stata manual for macros


CategoryRicottone

Stata/Macros (last edited 2023-07-28 21:22:48 by DominicRicottone)