From e6d9669bd7e54f75f1ef4b9767b8db390eb77b53 Mon Sep 17 00:00:00 2001 From: Sergio Correia Date: Tue, 4 Apr 2017 00:15:21 -0400 Subject: [PATCH] Add -keepnone- option to join.ado --- README.md | 2 +- src/fmerge.ado | 9 ++++++++- src/fmerge.sthlp | 2 +- src/join.ado | 7 ++++--- src/join.sthlp | 10 +++++++++- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c22c0b1..77a149c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # FTOOLS: A faster Stata for large datasets -- Current version: `2.9.0 28mar2017` +- Current version: `2.10.0 3apr2017` - Jump to: [`usage`](#usage) [`benchmarks`](#benchmarks) [`install`](#installation) ----------- diff --git a/src/fmerge.ado b/src/fmerge.ado index 10deb38..f78c154 100644 --- a/src/fmerge.ado +++ b/src/fmerge.ado @@ -1,4 +1,4 @@ -*! version 2.9.0 28mar2017 +*! version 2.10.0 3apr2017 * wrapper for join.ado, parsing code based on merge.ado program define fmerge @@ -36,11 +36,18 @@ program define fmerge loc uniquemaster = cond("`mtype'" == "1:1", "uniquemaster", "") + loc check = "`keepusing'"!="" + loc keepusing : list keepusing - varlist + if ("`keepusing'"=="" & `check') { + loc keepnone keepnone // don't keep any variable from using + } + loc cmd join `keepusing', /// from(`using') /// by(`varlist') /// keep(`keep') /// assert(`assert') /// + `keepnone' /// `generate' /// `nogenerate' /// `uniquemaster' /// diff --git a/src/fmerge.sthlp b/src/fmerge.sthlp index fe079a5..522b0f4 100644 --- a/src/fmerge.sthlp +++ b/src/fmerge.sthlp @@ -1,5 +1,5 @@ {smcl} -{* *! version 1.9.0 10jan2017}{...} +{* *! version 2.10.0 3apr2017}{...} {vieweralsosee "ftools" "help ftools"}{...} {vieweralsosee "join" "help join"}{...} {vieweralsosee "[R] merge" "help merge"}{...} diff --git a/src/join.ado b/src/join.ado index 28ab7aa..ff3af10 100644 --- a/src/join.ado +++ b/src/join.ado @@ -1,10 +1,10 @@ -*! version 2.9.0 28mar2017 +*! version 2.10.0 3apr2017 program define join // Parse -------------------------------------------------------------------- syntax /// - [anything] /// Variables that will be added (default is _all) + [anything] /// Variables that will be added (default is _all unless keepnone is used) , /// [from(string asis) into(string asis)] /// -using- dataset [by(string)] /// Primary and foreign keys @@ -13,6 +13,7 @@ program define join [GENerate(name) NOGENerate] /// _merge variable [UNIQuemaster] /// Assert that -by- is an id in the master dataset [noLabel] /// + [KEEPNone] /// [noNOTEs] /// [noREPort] /// [Verbose] @@ -70,7 +71,7 @@ program define join loc cmd `"qui use `if' using "`filename'", clear"' } - if ("`anything'" != "") { + if ("`anything'" != "" | "`keepnone'"!=""}) { keep `using_keys' `anything' } else { diff --git a/src/join.sthlp b/src/join.sthlp index 796efb7..e4b27d9 100644 --- a/src/join.sthlp +++ b/src/join.sthlp @@ -1,5 +1,5 @@ {smcl} -{* *! version 1.9.0 10jan2017}{...} +{* *! version 2.10.0 3apr2017}{...} {vieweralsosee "ftools" "help ftools"}{...} {vieweralsosee "fmerge" "help fmerge"}{...} {vieweralsosee "[R] merge" "help merge"}{...} @@ -71,6 +71,8 @@ As above, but with the "using" dataset currently open instead of the "master" {...} {synopt :{opt nonote:s}}do not copy notes from using{p_end} {...} +{synopt :{opt keepn:one}}don't add any variables from using (overrides default of {it:_all}){p_end} +{...} {synopt :{opt v:erbose}}show internal debug info {p_end} {synoptline} @@ -172,6 +174,12 @@ above 100,000 observations (due to Mata's overhead). specifies that notes in the using dataset not be added to the merged dataset; see {manhelp notes D:notes}. +{phang} +{cmd:keepnone} + specifies that no variables from using will be added. Use this in combination + with {cmd:keep(match)} if you just want to keep a group of observations + from the master dataset. + {phang} {cmd:noreport} specifies that {cmd:join} not present its summary table of