Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: -merge- in version11 fails to sort automatically


From   Padmakumar Sivadasan <pmathru2@illinois.edu>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: -merge- in version11 fails to sort automatically
Date   Mon, 7 Dec 2009 11:33:21 -0600

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
<wgould@stata.com> wrote:
> Padmakumar Sivadasan <pmathru2@illinois.edu> 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 <martin.weiss1@gmx.de> 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
> wgould@stata.com
> *
> *   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/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index