Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


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

Re: st: r(110) error with -svy-, -mark-, -marksample-


From   Nick Winter <[email protected]>
To   [email protected]
Subject   Re: st: r(110) error with -svy-, -mark-, -marksample-
Date   Tue, 31 Jul 2012 21:33:38 -0400

Another approach would be to exile the variable creation code to a separate do file from the -save- command. Something like:

* --- codedata.do

use dataset
... some manipulations
do uglycoding
save myfile

* --- end codedata.do

* --- uglycoding.do

forval ...
    tempvar ...

    ... calculations ...
}

* --- end uglycoding.do


Then the coding all gets done with a single call to -codedata.do-, which calls -uglycoding.do-. The tempvars are then local to uglycoding.do, and are automatically dropped when it ends, allowing -codedata.do- to resume, and to save a clean dataset.

Nick Winter


On 7/31/2012 9:10 PM, Stas Kolenikov wrote:
They were dropped automatically, but you could not benefit from it.
Entertain this:

-- tempvar_example.do --

sysuse auto, clear
tempvar one
gen byte `one' = 1
save auto_one, replace
exit

-- end of tempvar_example.do --

At the completion of tempvar_example.do, you won't see any tempvars
(although -describe- would indicate that the file has actually
changed). But the saved version will contain whatever was present at
that spot in time, including the ugly named __000000 or whatever the
available -tempvar- name will be. So -capture drop __00*- may often be
a good idea (you want -capture- just in case that there was no temp
crap left, otherwise -drop- would produce an error).

On Tue, Jul 31, 2012 at 5:43 PM,  <[email protected]> wrote:
Thank you, Stas!  Your supposition explains the behaviour observed
(including why it worked ok on 12 July 2012).

There were a load of temporary variables created in the process of
making my "voldat.dta" data set. But I had simply assumed that they
would have all disappeared when the data creation do file had
successfully completed. And they it turns out that they hadn't. They
weren't in my face as "voldat.dta" is large.

The (non-elegant) code which creates the tempvars is:

quietly {
forval t = 1/18 {
  forval f = 0/1   {
         tempvar temp1
         tempvar temp2
         tempvar temp3
         tempvar temp4

         regress mwage1 A A2 A3 A4 if mwage1 > 0 & !missing(mwage1) &
wave == `t' & female == `f'
         predict double `temp1' if e(sample), residuals
         regress mwage1 A A2 A3 A4 [aw = xrwght] if mwage1 > 0 &
!missing(mwage1) & wave == `t' & female == `f'
         predict double `temp2' if e(sample), residuals

         regress mwage2 A A2 A3 A4 if mwage2 > 0 & !missing(mwage2) &
wave == `t' & female == `f'
         predict double `temp3' if e(sample), residuals
         regress mwage2 A A2 A3 A4 [aw = xrwght] if mwage2 > 0 &
!missing(mwage2) & wave == `t' & female == `f'
         predict double `temp4' if e(sample), residuals

         replace mwage1res_u = `temp1' if mwage1 > 0 & !missing(mwage1) &
wave == `t' & female == `f'
         replace mwage1res_w = `temp2' if mwage1 > 0 & !missing(mwage1) &
wave == `t' & female == `f'
         replace mwage2res_u = `temp3' if mwage2 > 0 & !missing(mwage2) &
wave == `t' & female == `f'
         replace mwage2res_w = `temp4' if mwage2 > 0 & !missing(mwage2) &
wave == `t' & female == `f'
  }
}
}

I've now added a -drop __*- line after this section, and the temporary
variables are no longer retained in "voldat.dta". And the job with the
call to -idonepsu- now works again.

I remain surprised that the tempvars weren't automatically deleted at
the end of the data creation job.

------------------------------------------------------------------------
--------
 From   Stas Kolenikov <[email protected]>
To   [email protected]
Subject   Re: st: r(110) error with -svy-, -mark-, -marksample-
Date   Tue, 31 Jul 2012 17:19:23 -0500

------------------------------------------------------------------------
--------

The most obvious explanation is that you do have that __000003
variable present in your data set, for some strange reason (the data
set was saved while -tempvar- was created, but before it was cleaned
with an exit from a program). Sometimes, I do get something like that
with a complicated set of nested routines and some complicated
patterns of who creates and who cleans the -tempvar-s, although I
would expect that Stata would try to come up with the next available
-tempvar- name upon having checked that a variable already exists in
the data set. The conflict like that may also arise if you
deliberately drop a tempvar rather than let Stata do it. But it would
be strange if this error were in the official code.

On Tue, Jul 31, 2012 at 4:59 PM,  <[email protected]> wrote:
I am unable to run some -svy- related commands using one of my data
sets. The puzzle is that I have no problems with similar commands
applied to data from the Ref Manuals (cf. example below: uses
"stage5a.dta").

The issue: after -svyset-,  -svy: ...- commands produce a r(110) error

[P]     error . . . . . . . . . . . . . . . . . . . . . . . .  Return
code 110
         __________ already defined;
         A variable or a value label has already been defined, and you
         attempted to redefine it.  This occurs most often with
generate.
But I had made no such attempt to redefine, as far as I know. With
-set
trace on-, it seems that the command applied to my data is choking
when
it makes a call to -marksample-. There's an example below: uses
"voldat.dta".

In another example (not shown), I had been using -idonepsu- (command
to
deal with singleton PSUs; on SSC), and also hit the same error, though
this time with a call to -mark- according to a -set trace on-.  [Even
more strangely (to me), I have a log file from a job also using
-idonepsu and same data set, dated 6 Jul 2012, that ran without
error.]
Any ideas?

Stata 12MP/4, fully updated. Behaviour observed on Win7/64bit and Win
XP/32bit
. display "`c(tmpdir)'"
C:\DOCUME~1\stephen\LOCALS~1\Temp/

<snip>


Stephen
-------------------------------------
Professor Stephen P. Jenkins <[email protected]>
Department of Social Policy
London School of Economics and Political Science
Houghton Street, London WC2A 2AE, U.K.
Tel: +44 (0)20 7955 6527
Changing Fortunes: Income Mobility and Poverty Dynamics in Britain, OUP
2011, http://ukcatalogue.oup.com/product/9780199226436.do
Survival Analysis using Stata:
http://www.iser.essex.ac.uk/survival-analysis
Downloadable papers and software: http://ideas.repec.org/e/pje7.html

Please access the attached hyperlink for an important electronic communications disclaimer: http://lse.ac.uk/emailDisclaimer

*
*   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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index