*! version 1.10.1 05Dec2022 Mauricio Caceres Bravo, mauricio.caceres.bravo@gmail.com
*! Program for managing the gtools package installation
capture program drop gtools
program gtools
version 13.1
if ( inlist("`c(os)'", "MacOSX") | strpos("`c(machine_type)'", "Mac") ) local c_os_ macosx
else local c_os_: di lower("`c(os)'")
syntax, [ ///
LICENSEs ///
Verbose ///
Install_latest ///
Upgrade ///
showcase ///
examples ///
test ///
TESTs(str) ///
branch(str) ///
]
if ( `"`branch'"' == "" ) local branch master
if !inlist(`"`branch'"', "develop", "master") {
disp as err "{bf:Warning}: Branch `branch' is not intended for normal use."
* exit 198
}
local cwd `c(pwd)'
local github https://raw.githubusercontent.com/mcaceresb/stata-gtools/`branch'
if ( "`licenses'" == "licenses" ) {
disp `"gtools is {browse "https://github.com/mcaceresb/stata-gtools/blob/master/LICENSE":MIT-licensed }"'
disp ""
disp `"The GNU C library is GPL-licensed. See the {browse "http://www.gnu.org/licenses/":GNU lesser GPL for more details}."'
disp ""
disp `"The implementation of quicksort used is authored by the FreeBSD project and is BSD3-licensed."'
disp ""
disp `"The implementation of spookyhash used is authored by Guillaume Voirin and is {browse "https://github.com/centaurean/spookyhash/blob/master/LICENSE.md":BSD3-licensed}."'
if ( "`verbose'" != "" ) {
gtools_licenses
}
if ( `"`install_latest'`upgrade'`showcase'`examples'`test'`tests'"' == `""' ) {
exit 0
}
}
if ( ("`install_latest'" == "install_latest") | ("`upgrade'" == "upgrade") ) {
cap net uninstall gtools
net install gtools, from(`github'/build) replace
if ( `"`showcase'`examples'`test'`tests'"' == `""' ) {
exit 0
}
}
if ( "`showcase'`examples'" != "" ) {
gtools_showcase
if ( "`test'`tests'" == "" ) {
exit 0
}
}
if ( `"`test'`tests'"' != "" ) {
local t_hours comparisons
local t_days bench_full
local t_known dependencies basic_checks comparisons switches bench_test bench_full
local t_extra: list tests - t_known
if ( `:list sizeof t_extra' ) {
disp `"(uknown tests detected: `t_extra'; will try to run anyway)"'
}
if ( `"`tests'"' == "" ) {
disp as txt "{bf:WARNING:} Default unit tests from branch `branch' can take several"
disp as txt "hours. See {help gtools:help gtools} for details on unit testing."
}
else if ( `:list t_hours in tests' ) {
disp as txt "{bf:WARNING:} Unit tests"
disp as txt _n(1) " `tests'" _n(1)
disp as txt "from branch master can take several hours. See {help gtools:help gtools} for details."
}
else if ( `:list t_days in tests' ) {
disp as txt "{bf:WARNING:} Unit tests"
disp as txt _n(1) " `tests'" _n(1)
disp as txt "from branch master can take more than a day. See {help gtools:help gtools} for details."
}
else {
disp as txt "{bf:Note:} Unit tests '`tests'' from branch `branch'."
}
disp as txt "Are you sure you want to run them? (yes/no)", _request(GTOOLS_TESTS)
if inlist(`"${GTOOLS_TESTS}"', "y", "yes") {
global GTOOLS_TESTS
cap noi do `github'/build/gtools_tests.do `tests'
exit _rc
}
else {
global GTOOLS_TESTS
exit 0
}
}
display "Nothing to do. See {stata help gtools} or {stata gtools, examples} for usage. Version info:"
* mata mata mlib index
which gtools
cap noi _gtools_internal _check
if ( _rc ) {
disp as err "({bf:warning}: gtools_plugin internal check failed)"
}
end
capture program drop gtools_licenses
program gtools_licenses
disp _n(1) `"{hline 79}"' ///
_n(1) `"gtools license"' ///
_n(1) `""' ///
_n(1) `"MIT License"' ///
_n(1) `""' ///
_n(1) `"Copyright (c) 2017 Mauricio Caceres Bravop"' ///
_n(1) `""' ///
_n(1) `"Permission is hereby granted, free of charge, to any person obtaining a copy"' ///
_n(1) `"of this software and associated documentation files (the "Software"), to"' ///
_n(1) `"deal in the Software without restriction, including without limitation the"' ///
_n(1) `"rights to use, copy, modify, merge, publish, distribute, sublicense, and/or"' ///
_n(1) `"sell copies of the Software, and to permit persons to whom the Software is"' ///
_n(1) `"furnished to do so, subject to the following conditions:"' ///
_n(1) `""' ///
_n(1) `"The above copyright notice and this permission notice shall be included in all"' ///
_n(1) `"copies or substantial portions of the Software."' ///
_n(1) `""' ///
_n(1) `"THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR"' ///
_n(1) `"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,"' ///
_n(1) `"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL"' ///
_n(1) `"THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER"' ///
_n(1) `"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,"' ///
_n(1) `"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE"' ///
_n(1) `"SOFTWARE."' ///
_n(1) `""'
disp _n(1) `"{hline 79}"' ///
_n(1) `"spookyhash license"' ///
_n(1) `""' ///
_n(1) `"Copyright (c) 2015, Guillaume Voirin"' ///
_n(1) `""' ///
_n(1) `"All rights reserved."' ///
_n(1) `""' ///
_n(1) `"Redistribution and use in source and binary forms, with or without"' ///
_n(1) `"modification, are permitted provided that the following conditions are met:"' ///
_n(1) `""' ///
_n(1) `"1. Redistributions of source code must retain the above copyright notice, this"' ///
_n(1) `" list of conditions and the following disclaimer."' ///
_n(1) `""' ///
_n(1) `"2. Redistributions in binary form must reproduce the above copyright notice,"' ///
_n(1) `" this list of conditions and the following disclaimer in the documentation"' ///
_n(1) `" and/or other materials provided with the distribution."' ///
_n(1) `""' ///
_n(1) `"3. Neither the name of the copyright holder nor the names of its"' ///
_n(1) `" contributors may be used to endorse or promote products derived from"' ///
_n(1) `" this software without specific prior written permission."' ///
_n(1) `""' ///
_n(1) `"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS""' ///
_n(1) `"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE"' ///
_n(1) `"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE"' ///
_n(1) `"DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE"' ///
_n(1) `"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL"' ///
_n(1) `"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR"' ///
_n(1) `"SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER"' ///
_n(1) `"CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,"' ///
_n(1) `"OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE"' ///
_n(1) `"OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."' ///
_n(1) `""'
disp _n(1) `"{hline 79}"' ///
_n(1) `"quicksort license"' ///
_n(1) `""' ///
_n(1) `"Copyright (c) 1992, 1993"' ///
_n(1) `" The Regents of the University of California. All rights reserved."' ///
_n(1) `""' ///
_n(1) `"Redistribution and use in source and binary forms, with or without"' ///
_n(1) `"modification, are permitted provided that the following conditions"' ///
_n(1) `"are met:"' ///
_n(1) `"1. Redistributions of source code must retain the above copyright"' ///
_n(1) `" notice, this list of conditions and the following disclaimer."' ///
_n(1) `"2. Redistributions in binary form must reproduce the above copyright"' ///
_n(1) `" notice, this list of conditions and the following disclaimer in the"' ///
_n(1) `" documentation and/or other materials provided with the distribution."' ///
_n(1) `"4. Neither the name of the University nor the names of its contributors"' ///
_n(1) `" may be used to endorse or promote products derived from this software"' ///
_n(1) `" without specific prior written permission."' ///
_n(1) `""' ///
_n(1) `"THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND"' ///
_n(1) `"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE"' ///
_n(1) `"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE"' ///
_n(1) `"ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE"' ///
_n(1) `"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL"' ///
_n(1) `"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS"' ///
_n(1) `"OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)"' ///
_n(1) `"HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT"' ///
_n(1) `"LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY"' ///
_n(1) `"OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF"' ///
_n(1) `"SUCH DAMAGE."' ///
_n(1) `""'
disp _n(1) `"{hline 79}"' ///
_n(1) `"GNU C library license"' ///
_n(1) `""' ///
_n(1) `" GNU LESSER GENERAL PUBLIC LICENSE"' ///
_n(1) `" Version 3, 29 June 2007"' ///
_n(1) `""' ///
_n(1) `" Copyright (C) 2007 Free Software Foundation, Inc. "' ///
_n(1) `" Everyone is permitted to copy and distribute verbatim copies"' ///
_n(1) `" of this license document, but changing it is not allowed."' ///
_n(1) `""' ///
_n(1) `""' ///
_n(1) `" This version of the GNU Lesser General Public License incorporates"' ///
_n(1) `"the terms and conditions of version 3 of the GNU General Public"' ///
_n(1) `"License, supplemented by the additional permissions listed below."' ///
_n(1) `""' ///
_n(1) `" 0. Additional Definitions."' ///
_n(1) `""' ///
_n(1) `" As used herein, "this License" refers to version 3 of the GNU Lesser"' ///
_n(1) `"General Public License, and the "GNU GPL" refers to version 3 of the GNU"' ///
_n(1) `"General Public License."' ///
_n(1) `""' ///
_n(1) `" "The Library" refers to a covered work governed by this License,"' ///
_n(1) `"other than an Application or a Combined Work as defined below."' ///
_n(1) `""' ///
_n(1) `" An "Application" is any work that makes use of an interface provided"' ///
_n(1) `"by the Library, but which is not otherwise based on the Library."' ///
_n(1) `"Defining a subclass of a class defined by the Library is deemed a mode"' ///
_n(1) `"of using an interface provided by the Library."' ///
_n(1) `""' ///
_n(1) `" A "Combined Work" is a work produced by combining or linking an"' ///
_n(1) `"Application with the Library. The particular version of the Library"' ///
_n(1) `"with which the Combined Work was made is also called the "Linked"' ///
_n(1) `"Version"."' ///
_n(1) `""' ///
_n(1) `" The "Minimal Corresponding Source" for a Combined Work means the"' ///
_n(1) `"Corresponding Source for the Combined Work, excluding any source code"' ///
_n(1) `"for portions of the Combined Work that, considered in isolation, are"' ///
_n(1) `"based on the Application, and not on the Linked Version."' ///
_n(1) `""' ///
_n(1) `" The "Corresponding Application Code" for a Combined Work means the"' ///
_n(1) `"object code and/or source code for the Application, including any data"' ///
_n(1) `"and utility programs needed for reproducing the Combined Work from the"' ///
_n(1) `"Application, but excluding the System Libraries of the Combined Work."' ///
_n(1) `""'
disp _n(1) `" 1. Exception to Section 3 of the GNU GPL."' ///
_n(1) `""' ///
_n(1) `" You may convey a covered work under sections 3 and 4 of this License"' ///
_n(1) `"without being bound by section 3 of the GNU GPL."' ///
_n(1) `""' ///
_n(1) `" 2. Conveying Modified Versions."' ///
_n(1) `""' ///
_n(1) `" If you modify a copy of the Library, and, in your modifications, a"' ///
_n(1) `"facility refers to a function or data to be supplied by an Application"' ///
_n(1) `"that uses the facility (other than as an argument passed when the"' ///
_n(1) `"facility is invoked), then you may convey a copy of the modified"' ///
_n(1) `"version:"' ///
_n(1) `""' ///
_n(1) `" a) under this License, provided that you make a good faith effort to"' ///
_n(1) `" ensure that, in the event an Application does not supply the"' ///
_n(1) `" function or data, the facility still operates, and performs"' ///
_n(1) `" whatever part of its purpose remains meaningful, or"' ///
_n(1) `""' ///
_n(1) `" b) under the GNU GPL, with none of the additional permissions of"' ///
_n(1) `" this License applicable to that copy."' ///
_n(1) `""' ///
_n(1) `" 3. Object Code Incorporating Material from Library Header Files."' ///
_n(1) `""' ///
_n(1) `" The object code form of an Application may incorporate material from"' ///
_n(1) `"a header file that is part of the Library. You may convey such object"' ///
_n(1) `"code under terms of your choice, provided that, if the incorporated"' ///
_n(1) `"material is not limited to numerical parameters, data structure"' ///
_n(1) `"layouts and accessors, or small macros, inline functions and templates"' ///
_n(1) `"(ten or fewer lines in length), you do both of the following:"' ///
_n(1) `""' ///
_n(1) `" a) Give prominent notice with each copy of the object code that the"' ///
_n(1) `" Library is used in it and that the Library and its use are"' ///
_n(1) `" covered by this License."' ///
_n(1) `""' ///
_n(1) `" b) Accompany the object code with a copy of the GNU GPL and this license"' ///
_n(1) `" document."' ///
_n(1) `""'
disp _n(1) `" 4. Combined Works."' ///
_n(1) `""' ///
_n(1) `" You may convey a Combined Work under terms of your choice that,"' ///
_n(1) `"taken together, effectively do not restrict modification of the"' ///
_n(1) `"portions of the Library contained in the Combined Work and reverse"' ///
_n(1) `"engineering for debugging such modifications, if you also do each of"' ///
_n(1) `"the following:"' ///
_n(1) `""' ///
_n(1) `" a) Give prominent notice with each copy of the Combined Work that"' ///
_n(1) `" the Library is used in it and that the Library and its use are"' ///
_n(1) `" covered by this License."' ///
_n(1) `""' ///
_n(1) `" b) Accompany the Combined Work with a copy of the GNU GPL and this license"' ///
_n(1) `" document."' ///
_n(1) `""' ///
_n(1) `" c) For a Combined Work that displays copyright notices during"' ///
_n(1) `" execution, include the copyright notice for the Library among"' ///
_n(1) `" these notices, as well as a reference directing the user to the"' ///
_n(1) `" copies of the GNU GPL and this license document."' ///
_n(1) `""' ///
_n(1) `" d) Do one of the following:"' ///
_n(1) `""' ///
_n(1) `" 0) Convey the Minimal Corresponding Source under the terms of this"' ///
_n(1) `" License, and the Corresponding Application Code in a form"' ///
_n(1) `" suitable for, and under terms that permit, the user to"' ///
_n(1) `" recombine or relink the Application with a modified version of"' ///
_n(1) `" the Linked Version to produce a modified Combined Work, in the"' ///
_n(1) `" manner specified by section 6 of the GNU GPL for conveying"' ///
_n(1) `" Corresponding Source."' ///
_n(1) `""' ///
_n(1) `" 1) Use a suitable shared library mechanism for linking with the"' ///
_n(1) `" Library. A suitable mechanism is one that (a) uses at run time"' ///
_n(1) `" a copy of the Library already present on the user's computer"' ///
_n(1) `" system, and (b) will operate properly with a modified version"' ///
_n(1) `" of the Library that is interface-compatible with the Linked"' ///
_n(1) `" Version."' ///
_n(1) `""' ///
_n(1) `" e) Provide Installation Information, but only if you would otherwise"' ///
_n(1) `" be required to provide such information under section 6 of the"' ///
_n(1) `" GNU GPL, and only to the extent that such information is"' ///
_n(1) `" necessary to install and execute a modified version of the"' ///
_n(1) `" Combined Work produced by recombining or relinking the"' ///
_n(1) `" Application with a modified version of the Linked Version. (If"' ///
_n(1) `" you use option 4d0, the Installation Information must accompany"' ///
_n(1) `" the Minimal Corresponding Source and Corresponding Application"' ///
_n(1) `" Code. If you use option 4d1, you must provide the Installation"' ///
_n(1) `" Information in the manner specified by section 6 of the GNU GPL"' ///
_n(1) `" for conveying Corresponding Source.)"' ///
_n(1) `""'
disp _n(1) `" 5. Combined Libraries."' ///
_n(1) `""' ///
_n(1) `" You may place library facilities that are a work based on the"' ///
_n(1) `"Library side by side in a single library together with other library"' ///
_n(1) `"facilities that are not Applications and are not covered by this"' ///
_n(1) `"License, and convey such a combined library under terms of your"' ///
_n(1) `"choice, if you do both of the following:"' ///
_n(1) `""' ///
_n(1) `" a) Accompany the combined library with a copy of the same work based"' ///
_n(1) `" on the Library, uncombined with any other library facilities,"' ///
_n(1) `" conveyed under the terms of this License."' ///
_n(1) `""' ///
_n(1) `" b) Give prominent notice with the combined library that part of it"' ///
_n(1) `" is a work based on the Library, and explaining where to find the"' ///
_n(1) `" accompanying uncombined form of the same work."' ///
_n(1) `""' ///
_n(1) `" 6. Revised Versions of the GNU Lesser General Public License."' ///
_n(1) `""' ///
_n(1) `" The Free Software Foundation may publish revised and/or new versions"' ///
_n(1) `"of the GNU Lesser General Public License from time to time. Such new"' ///
_n(1) `"versions will be similar in spirit to the present version, but may"' ///
_n(1) `"differ in detail to address new problems or concerns."' ///
_n(1) `""' ///
_n(1) `" Each version is given a distinguishing version number. If the"' ///
_n(1) `"Library as you received it specifies that a certain numbered version"' ///
_n(1) `"of the GNU Lesser General Public License "or any later version""' ///
_n(1) `"applies to it, you have the option of following the terms and"' ///
_n(1) `"conditions either of that published version or of any later version"' ///
_n(1) `"published by the Free Software Foundation. If the Library as you"' ///
_n(1) `"received it does not specify a version number of the GNU Lesser"' ///
_n(1) `"General Public License, you may choose any version of the GNU Lesser"' ///
_n(1) `"General Public License ever published by the Free Software Foundation."' ///
_n(1) `""' ///
_n(1) `" If the Library as you received it specifies that a proxy can decide"' ///
_n(1) `"whether future versions of the GNU Lesser General Public License shall"' ///
_n(1) `"apply, that proxy's public statement of acceptance of any version is"' ///
_n(1) `"permanent authorization for you to choose that version for the"' ///
_n(1) `"Library."'
end
capture program drop gtools_showcase
program gtools_showcase
* preserve
gtools_cmd sysuse auto, clear
gtools_head gstats {hdfe|residualize} varlist [if] [in] [weight], [absorb(varlist) options]
gtools_cmd gstats hdfe hdfe_price = price, absorb(foreign rep78)
gtools_cmd gstats residualize price mpg [w = gear_ratio], absorb(foreign rep78) prefix(res_)
gtools_head gstats {sum|tab} varlist [if] [in] [weight], [by(varlist) options]
gtools_cmd gstats sum price [pw = gear_ratio / 4]
gtools_cmd gstats tab price mpg, by(foreign) matasave
gtools_head gquantiles [newvarname =] exp [if] [in] [weight], {_pctile|xtile|pctile} [options]
gtools_cmd gquantiles 2 * price, _pctile nq(10)
gtools_cmd gquantiles p10 = 2 * price, pctile nq(10)
gtools_cmd gquantiles x10 = 2 * price, xtile nq(10) by(rep78)
gtools_cmd fasterxtile xx = log(price) [w = weight], cutpoints(p10) by(foreign)
gtools_head gstats winsor varlist [if] [in] [weight], [by(varlist) cuts(# #) options]
gtools_cmd gstats winsor price gear_ratio mpg, cuts(5 95) s(_w1)
gtools_cmd gstats winsor price gear_ratio mpg, cuts(5 95) by(foreign) s(_w2)
gtools_head hashsort varlist, [options]
gtools_cmd hashsort -make
gtools_cmd hashsort foreign -rep78, benchmark verbose mlast
gtools_head gegen target = stat(source) [if] [in] [weight], by(varlist) [options]
gtools_cmd gegen tag = tag(foreign)
gtools_cmd gegen group = tag(-price make)
gtools_cmd gegen p2_5 = pctile(price) [w = weight], by(foreign) p(2.5)
gtools_head gisid varlist [if] [in], [options]
gtools_cmd gisid make, missok
gtools_cmd gisid price in 1 / 2
gtools_head gduplicates varlist [if] [in], [options gtools(gtools_options)]
gtools_cmd gduplicates report foreign
gtools_cmd gduplicates report rep78 if foreign, gtools(bench(3))
gtools_head glevelsof varlist [if] [in], [options]
gtools_cmd glevelsof rep78, local(levels) sep(" | ")
gtools_cmd glevelsof foreign mpg if price < 4000, loc(lvl) sep(" | ") colsep(", ")
gtools_cmd glevelsof foreign mpg in 10 / 70, gen(uniq_) nolocal
gtools_head gtop varlist [if] [in] [weight], [options]
disp "gtoplevelsof varlist [if] [in] [weight], [options]" _n(1)
gtools_cmd gtoplevelsof foreign rep78
gtools_cmd gtop foreign rep78 [w = weight], ntop(5) missrow groupmiss pctfmt(%6.4g) colmax(3)
gtools_head gregress depvar indepvars [if] [in] [weight], [by(varlist) options]
gtools_cmd gregress price mpg rep78, mata(coefs) prefix(b(_b_) se(_se_))
gtools_cmd gregress price mpg [fw = rep78], by(foreign) absorb(rep78 headroom) cluster(rep78)
gtools_head givregress depvar (endog = instruments) exog [if] [in] [weight], [by(varlist) options]
gtools_cmd givregress price (mpg = gear_ratio) rep78, mata(coefs) prefix(b(_b_) se(_se_)) replace
gtools_cmd givregress price (mpg = gear_ratio) [fw = rep78], by(foreign) absorb(rep78 headroom) cluster(rep78)
gtools_head gglm depvar indepvars [if] [in] [weight], family(...) [by(varlist) options]
gtools_cmd gglm price mpg rep78, family(poisson) mata(coefs) prefix(b(_b_) se(_se_)) replace
gtools_cmd gglm price mpg [fw = trunk], family(poisson) by(foreign) absorb(rep78 headroom) cluster(rep78)
gtools_cmd
gtools_cmd gglm foreign price rep78 [fw = trunk], family(binomial) absorb(headroom) mata(coefs)
gtools_cmd gglm foreign price if rep78 > 2, family(binomial) by(rep78) prefix(b(_b_) se(_se_)) replace
gtools_head gcollapse (stat) out = src [(stat) out = src ...] [if] [if] [weight], by(varlist) [options]
gtools_cmd gen h1 = headroom
gtools_cmd gen h2 = headroom
gtools_cmd local lbl labelformat(#stat:pretty# #sourcelabel#)
gtools_cmd
gtools_cmd gcollapse (mean) mean = price (median) p50 = gear_ratio, by(make) merge v `lbl'
disp `"disp "\`:var label mean', \`:var label p50'""'
gtools_cmd gcollapse (iqr) irq? = h? (nunique) turn (p97.5) mpg, by(foreign rep78) bench(2) wild
gtools_head gcontract varlist [if] [if] [fweight], [options]
gtools_cmd gcontract foreign [fw = turn], freq(f) percent(p)
* restore
gtools_head greshape subcommand list, i(i) j(j) [options]
disp " greshape wide varlist, i(i) j(j) [options]"
disp " greshape long prefixlist, i(i) [j(j) string options]" _n(1)
disp " greshape spread varlist, j(j) [options]"
disp " greshape gather varlist, j(j) value(value) [options]" _n(1)
gtools_cmd gen j = _n
gtools_cmd greshape wide f p, i(foreign) j(j)
gtools_cmd greshape long f p, i(foreign) j(j)
gtools_cmd
gtools_cmd greshape spread f p, j(j)
gtools_cmd greshape gather f? p?, j(j) value(fp)
gtools_head gstats transform (stat) out = src [(stat) out = src ...] [if] [if] [weight], by(varlist) [options]
disp " gstats range (stat) out = src [...] [if] [if] [weight], by(varlist) [options]"
disp " gstats moving (stat) out = src [...] [if] [if] [weight], by(varlist) [options]"
gtools_cmd sysuse auto, clear
gtools_cmd gstats transform (normalize) price (demean) price (range mean -sd sd) price, auto
gtools_cmd gstats range (mean) mean_r = price (sd) sd_r = price, interval(-10 10 mpg)
gtools_cmd gstats moving (mean) mean_m = price (sd) sd_m = price, by(foreign) window(-5 5)
end
capture program drop gtools_head
program gtools_head
gettoken cmd _: 0
disp _n(1) `"`cmd'"' _n(1) `"{hline `=length(`"`cmd'"')'}"' _n(2) `"`0'"' _n(1)
end
capture program drop gtools_cmd
program gtools_cmd
disp `"`0'"'
* disp `"{stata `0'}"'
* `0'
* disp ""
end
if ( inlist("`c(os)'", "MacOSX") | strpos("`c(machine_type)'", "Mac") ) local c_os_ macosx
else local c_os_: di lower("`c(os)'")
if ( `c(stata_version)' < 14.1 ) local spiver v2
else local spiver v3