Thank you Martin and Bill for your prompt reply !
As Martin suggested, I am including below the output when I run the
-merge- with -set trace on-. Since I don't find an error notification
at -checksort- I have included the entire output from the beginning
of the -merge- command till the error message.
As Bill suggested, I shall also send my data and log files to Stata
technical support.
Thanks
Padmakumar
. set trace on
. merge 1:1 cik fyear using compustatcsaall
----------------------------------------------------------------------------------------------------------------------------------
begin merge ---
- version 11
- gettoken mtype 0 : 0, parse(" ,")
- if (!strpos("`mtype'", ":") & "`mtype'"!="") {
= if (!strpos("1:1", ":") & "1:1"!="") {
if (_caller()>=11) {
di as smcl as txt "{p}"
di as smcl "(note: you are using old"
di as smcl "{bf:merge} syntax; see"
di as smcl "{bf:{help merge:[R] merge}} for new syntax)"
di as smcl "{p_end}"
}
merge_10 `mtype' `0'
exit
}
- local origmtype `"`mtype'"'
= local origmtype `"1:1"'
- mata: map_mtype(`"mtype"')
- gettoken token : 0, parse(" ,")
- if ("`token'"=="_n") {
= if ("cik"=="_n") {
if ("`mtype'"!="1:1") {
error_seq_not11 "`mtype'" "`origmtype'"
}
gettoken token 0 : 0, parse(" ,")
local mtype "_n"
}
- syntax [varlist(default=none)] using/ [, ASSERT(string) DEBUG
GENerate(name) FORCE KEEP(string) KEEPUSing(string) noLabel NOGENerate
noNOTEs REP
> LACE noREPort SORTED UPDATE ]
- if ("`mtype'"!="_n") {
= if ("1:1"!="_n") {
- local origmtype `"`mtype'"'
= local origmtype `"1:1"'
- mata: map_mtype(`"mtype"')
- if ("`varlist'"=="") {
= if ("cik fyear"=="") {
error_mat_varlist "`mtype'" "`origmtype'"
}
- }
- else {
if ("`mtype'"=="_n") {
if ("`varlist'"!="") {
error_seq_varlist
}
}
}
- mata: fullfilename("using", "usingfull", "using")
- mata: resultlist("assert")
- mata: resultlist("keep")
- if ("`generate'"!="") {
= if (""!="") {
if ("`nogenerate'"!="") {
di as smcl err "{p}"
di as smcl "options -generate()- and -nogenerate-"
di as smcl "may not be specified together."
di as smcl err "{p_end}"
}
confirm new var `generate'
}
- if ("`replace'"!="") {
= if (""!="") {
if ("`update'"=="") {
error_replace
}
}
- if ("`sorted'"=="" & "`mtype'"!="_n") {
= if (""=="" & "1:1"!="_n") {
- local sortedby : sortedby
- checksort "`sortedby'" "`varlist'"
= checksort "company_fkey begin_year file_date" "cik fyear"
----------------------------------------------------------------------------------------------------------------------
begin merge.checksort ---
- args is should
- local i 0
- foreach v1 of local should {
- local ++i
- local v2 : word `i' of `is'
= local v2 : word 1 of company_fkey begin_year file_date
- if ("`v1'"!="`v2'") {
= if ("cik"!="company_fkey") {
- return scalar sorted = 0
- exit
- local ++i
- local v2 : word `i' of `is'
= local v2 : word 2 of company_fkey begin_year file_date
- if ("`v1'"!="`v2'") {
= if ("fyear"!="begin_year") {
- return scalar sorted = 0
- exit
------------------------------------------------------------------------------------------------------------------------
end merge.checksort ---
- if (!r(sorted)) {
- sort `varlist'
= sort cik fyear
- }
- quietly describe using "`using'", varlist short
= quietly describe using "compustatcsaall.dta", varlist short
-----------------------------------------------------------------------------------------------------------------------------
begin describe ---
- version 9
- local version : di "version " string(_caller()) ":"
- syntax [anything] [using] [, SImple *]
- local varlist `"`anything'"'
= local varlist `""'
- if ("`simple'" == "") {
= if ("" == "") {
- `version' _describe `0'
= version 11: _describe using "compustatcsaall.dta", varlist short
- return add
- }
- else {
if (`"`options'"' != "") {
di as err "simple may not be combined with other options"
exit 198
}
if (`"`using'"' != "") {
qui `version' describe `varlist' `using', varlist
if "`varlist'" == "" {
local vars "`r(varlist)'"
}
else {
local vars "`varlist'"
}
local wid = 2
local n : list sizeof vars
if `n'==0 {
exit
}
foreach x of local vars {
local wid = max(`wid', length(`"`x'"'))
}
local wid = `wid' + 2
local cols = int((`c(linesize)'+1)/`wid')
if `cols' < 2 {
foreach x of local `vars' {
di as txt `col' `"`x'"'
}
exit
}
local lines = `n'/`cols'
local lines = int(cond(`lines'>int(`lines'), `lines'+1, `lines'))
forvalues i=1(1)`lines' {
local top = min((`cols')*`lines'+`i', `n')
local col = 1
forvalues j=`i'(`lines')`top' {
local x : word `j' of `vars'
di as txt _column(`col') "`x'" _c
local col = `col' + `wid'
}
di as txt
}
qui `version' describe `varlist' `using', short
return add
}
else {
ds `varlist'
qui `version' _describe `varlist', short
return add
}
}
-------------------------------------------------------------------------------------------------------------------------------
end describe ---
- local sortedby "`r(sortlist)'"
= local sortedby "gvkey fyear"
- checksort "`sortedby'" "`varlist'"
= checksort "gvkey fyear" "cik fyear"
----------------------------------------------------------------------------------------------------------------------
begin merge.checksort ---
- args is should
- local i 0
- foreach v1 of local should {
- local ++i
- local v2 : word `i' of `is'
= local v2 : word 1 of gvkey fyear
- if ("`v1'"!="`v2'") {
= if ("cik"!="gvkey") {
- return scalar sorted = 0
- exit
- local ++i
- local v2 : word `i' of `is'
= local v2 : word 2 of gvkey fyear
- if ("`v1'"!="`v2'") {
= if ("fyear"!="fyear") {
return scalar sorted = 0
exit
}
- }
- return scalar sorted = 1
------------------------------------------------------------------------------------------------------------------------
end merge.checksort ---
- if (!r(sorted)) {
preserve
qui use "`using'", clear
sort `varlist'
tempfile using
qui save "`using'", replace
restore
}
- }
- if ("`nogenerate'"!="") {
= if (""!="") {
tempvar mergevar
local mergevaristemp 1
}
- else {
- local mergevar = cond("`generate'"!="", "`generate'", "_merge")
= local mergevar = cond(""!="", "", "_merge")
- local mergevaristemp 0
- }
- local options `update' `replace' `notes' `label' _merge(`mergevar') `force'
= local options _merge(_merge)
- if (substr("`mtype'", 1, 1)=="1") {
= if (substr("1:1", 1, 1)=="1") {
- local options `options' uniqmaster
= local options _merge(_merge) uniqmaster
- }
- if (substr("`mtype'", 3, 1)=="1") {
= if (substr("1:1", 3, 1)=="1") {
- local options `options' uniqusing
= local options _merge(_merge) uniqmaster uniqusing
- }
- if ("`keepusing'"!="") {
= if (""!="") {
local options `options' keep(`keepusing')
}
- if ("`keep'" !="" & !strpos("`keep'" , "2")) { local options `options' nokeep
= if ("" !="" & !strpos("" , "2")) { local options _merge(_merge)
uniqmaster uniqusing nokeep
}
- local _merge `"_merge `varlist' using "`using'", nowarn `options'"'
= local _merge `"_merge cik fyear using "compustatcsaall.dta", nowarn
_merge(_merge) uniqmaster uniqusing"'
- if ("`debug'"!="") {
= if (""!="") {
di as txt _n "command is"
di `"`_merge'"' _n
}
- `_merge'
= _merge cik fyear using "compustatcsaall.dta", nowarn _merge(_merge)
uniqmaster uniqusing
using data not sorted
------------------------------------------------------------------------------------------------------------------------------------
end merge ---
r(5);
On Mon, Dec 7, 2009 at 10:43 AM, William Gould, StataCorp LP
<[email protected]> wrote:
> Padmakumar Sivadasan <[email protected]> is using Stata 11
> and reports obtaining the following output,
>
> . merge 1:1 cik fyear using compustat
> using data not sorted
> r(5);
>
> even though the manual states that you are not required to have the
> datasets sorted before using -merge-.
>
> Martin Weiss <[email protected]> helpfully wrote,
>
>> -merge 1:1- performs its -checksort- as one of its first tasks. So
>> -set trace on- and report what happens there...
>
> Padmakumar can do that and then we can see if we can determine the source
> of the problem here on the list, but I recommend that Padmakumar go to
> Stata technical support with this problem.
>
> I have tried to reproduce this problem, and I cannot.
>
> The first request Technical Services will make is that Padmakumar send
> a log and a copy of the data so we can reproduce the problem here.
>
> -- Bill
> [email protected]
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
>
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/