1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight.do</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Stata) - Theme (Breeze Dark)"/>
</head><body style="background-color:#232629;color:#cfcfc2"><pre>
<span style="color:#7a7c7d">/* Test file for kate's stata syntax highlighting</span>
<span style="color:#7a7c7d">*/</span>
*! <span style="font-weight:bold">version</span> 1.2.0 2mar2003 E. Leuven
<span style="font-weight:bold">program</span> <span style="font-weight:bold">define</span> spellsplit
<span style="font-weight:bold">version</span> 7
<span style="font-weight:bold">syntax</span> [anything], spell(<span style="font-weight:bold">varlist</span> <span style="color:#8e44ad">min</span>=2 <span style="color:#8e44ad">max</span>=2) [ <span style="font-weight:bold">by</span>(<span style="font-weight:bold">varlist</span>)]
<span style="font-weight:bold">tokenize</span> <span style="color:#27ae60">`spell'</span>
<span style="font-weight:bold">local</span> date0 <span style="color:#27ae60">`1'</span>
<span style="font-weight:bold">local</span> date1 <span style="color:#27ae60">`2'</span>
<span style="font-weight:bold">local</span> f0 : <span style="font-weight:bold">format</span> <span style="color:#27ae60">`date0'</span>
<span style="font-weight:bold">local</span> f1 : <span style="font-weight:bold">format</span> <span style="color:#27ae60">`date1'</span>
<span style="color:#7a7c7d">/* set default statistic */</span>
<span style="font-weight:bold">local</span> current <span style="color:#f44f4f">"mean"</span>
gettoken left anything : anything, <span style="color:#8e44ad">match</span>(prns)
<span style="font-weight:bold">while</span> <span style="color:#f44f4f">"`left'"</span>!=<span style="color:#f44f4f">""</span> {
<span style="font-weight:bold">if</span> <span style="color:#f44f4f">"`prns'"</span>!=<span style="color:#f44f4f">""</span> {
<span style="font-weight:bold">if</span> !<span style="color:#8e44ad">inlist</span>(<span style="color:#f44f4f">"`left'"</span>,<span style="color:#f44f4f">"mean"</span>,<span style="color:#f44f4f">"sum"</span>) {
<span style="font-weight:bold">di</span> <span style="font-weight:bold">as</span> <span style="font-weight:bold">error</span> <span style="color:#f44f4f">"Statistic `left' not supported"</span>
<span style="font-weight:bold">exit</span> 198
}
<span style="font-weight:bold">local</span> current <span style="color:#f44f4f">"`left'"</span>
}
<span style="font-weight:bold">else</span> {
<span style="font-weight:bold">local</span> <span style="color:#27ae60">`current'</span>vars <span style="color:#27ae60">``current'</span>vars' <span style="color:#27ae60">`left'</span>
}
gettoken left anything : anything, <span style="color:#8e44ad">match</span>(prns)
}
<span style="font-weight:bold">if</span> (<span style="color:#f44f4f">"`meanvars'"</span>!=<span style="color:#f44f4f">""</span>) {
<span style="font-weight:bold">confirm</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`meanvars'</span>
<span style="font-weight:bold">unab</span> meanvars : <span style="color:#27ae60">`meanvars'</span>
}
<span style="font-weight:bold">if</span> (<span style="color:#f44f4f">"`sumvars'"</span>!=<span style="color:#f44f4f">""</span>) {
<span style="font-weight:bold">confirm</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`sumvars'</span>
<span style="font-weight:bold">unab</span> sumvars : <span style="color:#27ae60">`sumvars'</span>
}
<span style="font-weight:bold">quietly</span> {
g _count = 1
<span style="font-weight:bold">local</span> xvars <span style="color:#27ae60">`meanvars'</span> <span style="color:#27ae60">`sumvars'</span> _count
<span style="color:#7a7c7d">/* create dummy by-var if no by option is specified */</span>
<span style="font-weight:bold">if</span> <span style="color:#f44f4f">"`by'"</span>==<span style="color:#f44f4f">""</span> {
<span style="font-weight:bold">tempvar</span> <span style="font-weight:bold">by</span>
g <span style="font-weight:bold">byte</span> <span style="color:#27ae60">`by'</span> = 1
}
<span style="font-weight:bold">tempvar</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span>
<span style="color:#7a7c7d">/* create negative for subtraction when spell ends */</span>
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
g <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = -<span style="color:#27ae60">`v'</span>
<span style="font-weight:bold">local</span> txvars <span style="color:#27ae60">`txvars'</span> <span style="color:#27ae60">``v'</span>'
}
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`by'</span> {
g <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = <span style="color:#27ae60">`v'</span>
<span style="font-weight:bold">local</span> txvars <span style="color:#27ae60">`txvars'</span> <span style="color:#27ae60">``v'</span>'
}
<span style="font-weight:bold">stack</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`txvars'</span>, into(<span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`xvars'</span> <span style="color:#27ae60">`by'</span>) <span style="font-weight:bold">clear</span>
<span style="color:#7a7c7d">/* calculate totals per date */</span>
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
<span style="font-weight:bold">egen</span> <span style="font-weight:bold">double</span> <span style="color:#27ae60">``v'</span>' = <span style="font-weight:bold">sum</span>(<span style="color:#27ae60">`v'</span>), <span style="font-weight:bold">by</span>(<span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span>)
}
<span style="color:#7a7c7d">/* unique dates only */</span>
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span>, <span style="font-weight:bold">sort</span>: <span style="font-weight:bold">keep</span> <span style="font-weight:bold">if</span> <span style="color:#2980b9">_n</span>==1
<span style="color:#7a7c7d">/* calculate totals (+ when spell starts - when ends) */</span>
<span style="font-weight:bold">sort</span> <span style="color:#27ae60">`by'</span>
cap <span style="font-weight:bold">foreach</span> v <span style="font-weight:bold">of</span> <span style="font-weight:bold">varlist</span> <span style="color:#27ae60">`xvars'</span> {
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span>: <span style="font-weight:bold">replace</span> <span style="color:#27ae60">`v'</span> = <span style="font-weight:bold">sum</span>(<span style="color:#27ae60">``v'</span>')
}
<span style="font-weight:bold">by</span> <span style="color:#27ae60">`by'</span>: g <span style="color:#27ae60">`date1'</span> = <span style="color:#27ae60">`date0'</span>[<span style="color:#2980b9">_n</span> + 1]
<span style="font-weight:bold">drop</span> <span style="font-weight:bold">if</span> <span style="color:#27ae60">`date0'</span>><span style="color:#27ae60">`date1'</span>
<span style="font-weight:bold">drop</span> _stack
<span style="font-weight:bold">drop</span> <span style="font-weight:bold">if</span> _count==0
<span style="font-weight:bold">order</span> <span style="color:#27ae60">`by'</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`xvars'</span>
<span style="font-weight:bold">format</span> <span style="color:#27ae60">`date0'</span> <span style="color:#27ae60">`f0'</span>
<span style="font-weight:bold">format</span> <span style="color:#27ae60">`date1'</span> <span style="color:#27ae60">`f1'</span>
cap <span style="font-weight:bold">for</span> <span style="font-weight:bold">var</span> <span style="color:#27ae60">`meanvars'</span>: <span style="font-weight:bold">replace</span> X = X/_count
<span style="font-weight:bold">compress</span>
}
<span style="font-weight:bold">end</span>
</pre></body></html>
|