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: replacing previous observations according to current observation, foreach? replace?


From   Charlotte Picard <[email protected]>
To   "[email protected]" <[email protected]>
Subject   RE: st: replacing previous observations according to current observation, foreach? replace?
Date   Mon, 6 Dec 2010 11:52:41 -0500

I am using Stata 11 IC, (64 bit Windows)

I tried copying and pasting the code from the website and still got the same issue.  It seems that the error occurs at the 2nd line of the loop.  I set trace on and got this:

. *******!
. 
. clear
--------------------------------------------------------------------------------- begin clear ---
- if _caller() < 10 {
  _clear_9 `0'
  exit
  }
- version 10
- syntax [anything]
- tokenize `anything'
= tokenize 
- if `"`2'"' != "" {
= if `""' != "" {
  display as err "`2' not allowed"
  exit 198
  }
- if "`1'"=="" {
= if ""=="" {
- drop _all
- label drop _all
  ------------------------------------------------------------------------------- begin label ---
  - version 10.0
  - gettoken val : 0
  - if (strpos("`val'", "val") > 0 ) {
  = if (strpos("drop", "val") > 0 ) {
    gettoken val 0 : 0
    syntax anything [, nofix]
    if "`fix'" != "" {
    local fix ", nofix"
    }
    gettoken var rest : anything
    while `"`rest'"' != "" {
    gettoken lab rest : rest
    local label "`lab'"
    }
    local vlist : list anything - lab
    if "`lab'" == "." {
    local lab ""
    }
    foreach var of varlist `vlist' {
    _label `val' `var' `lab' `fix'
    }
    }
  - else {
  - _label `macval(0)'
  = _label drop _all
  - }
  --------------------------------------------------------------------------------- end label ---
- }
- else if "`1'"=="mata" {
= else if ""=="mata" {
  mata: mata clear
  }
- else if inlist("`1'", "results", "matrix") {
= else if inlist("", "results", "matrix") {
  return clear
  clearreturn
  ereturn clear
  sreturn clear
  _return drop _all
  if ("`1'" == "matrix") {
  matrix drop _all
  _est drop _all
  }
  }
- else if "`1'"=="programs" {
= else if ""=="programs" {
  program drop _all
  }
- else if "`1'"=="ado" {
= else if ""=="ado" {
  program drop _allado
  }
- else if "`1'"=="*" | "`1'"=="all" {
= else if ""=="*" | ""=="all" {
  drop _all
  label drop _all
  matrix drop _all
  scalar drop _all
  constraint drop _all
  eq drop _all
  file close _all
  postutil clear
  _return drop _all
  discard
  program drop _all
  timer clear
  mata: mata clear
  }
- else {
  display as err "`1' not allowed"
  exit 198
  }
----------------------------------------------------------------------------------- end clear ---
. 
. inp region week cases
        region       week      cases
  1. 
. 1             1       5
  2. 
. 2             1       4
  3. 
. 3             1       0
  4. 
. 4             1       2
  5. 
. 1             2       3
  6. 
. 2             2       2
  7. 
. 3             2       1
  8. 
. 4             2       0
  9. 
. 1             3       2
 10. 
. 2             3      -3
 11. 
. 3             3       0
 12. 
. 4             3      -4
 13. 
. end
. 
. 
. 
. 
. 
. sort region week
. 
. clonevar cases2 = cases
------------------------------------------------------------------------------ begin clonevar ---
- version 8.0
- gettoken newvar 0 : 0, parse("= ")
- gettoken eqs 0 : 0, parse("= ")
- gettoken varname 0 : 0
- syntax [if] [in]
- if "`eqs'" != "=" {
= if "=" != "=" {
  di "{p}{err}syntax is {cmd:clonevar {it:newvar} = {it:varname}} ...{p_end}"
  exit 198
  }
- confirm new var `newvar'
= confirm new var cases2
- confirm var `varname'
= confirm var cases
- local type : type `varname'
= local type : type cases
- gen `type' `newvar' = `varname' `if' `in'
= gen float cases2 = cases  
- local w : variable label `varname'
= local w : variable label cases
- if `"`w'"' != "" label variable `newvar' `"`w'"'
= if `""' != "" label variable cases2 `""'
- local vallbl : value label `varname'
= local vallbl : value label cases
- if "`vallbl'" != "" label val `newvar' `vallbl'
= if "" != "" label val cases2 
- format `newvar' `: format `varname''
= format cases2 %9.0g
- tokenize `"`: char `varname'[]'"'
= tokenize `""'
- while `"`1'"' != "" {
= while `""' != "" {
  char `newvar'[`1'] `"`: char `varname'[`1']'"'
  mac shift
  }
-------------------------------------------------------------------------------- end clonevar ---
. 
. 
. 
. **compare tables in the loop to this table**
. 
. l if inlist(region, 2, 4), sepby(region)
     +--------------------------------+
     | region   week   cases   cases2 |
     |--------------------------------|
  4. |      2      1       4        4 |
  5. |      2      2       2        2 |
  6. |      2      3      -3       -3 |
     |--------------------------------|
 10. |      4      1       2        2 |
 11. |      4      2       0        0 |
 12. |      4      3      -4       -4 |
     +--------------------------------+
. 
. 
. 
. qui su week, d
. 
. forval n = 1/`r(max)' {
  2. 
. by region: replace cases2 = cases[_n-`n']+cases2  ///
  3. 
. if cases2<0 & region[_n] == region[_n-`n']
  4. 
. di in r "Changes based on `n' Weeks Prior to Week `n' -->"
  5. 
. li if inlist(region, 2, 4) , sepby(region)
  6. 
. }
- forval n = 1/`r(max)' {
= forval n = 1/3 {
- by region: replace cases2 = cases[_n-`n']+cases2 ///
= by region: replace cases2 = cases[_n-1]+cases2 ///
invalid syntax
  if cases2<0 & region[_n] == region[_n-`n']
  di in r "Changes based on `n' Weeks Prior to Week `n' -->"
  li if inlist(region, 2, 4) , sepby(region)
  }
r(198);
. 
. 
. 
. *******!
. 

________________________________________

From: [email protected] [[email protected]] On Behalf Of Eric Booth [[email protected]]
Sent: Sunday, December 05, 2010 10:10 PM
To: <[email protected]>
Subject: Re: st: replacing previous observations according to current observation, foreach? replace?

<>

Not without a more detailed description of what lines are running when the error occurred. First, what version of Stata do you have and what platform are you running it on?
It runs fine on my machine (Stata 11 MP, Mac OSX 10.6), so my best guesses are that:
 (1) there's some kind of wrapping issue (that is, the code wrapped in your email program and needs to be unwrapped -- maybe you should try copying/pasting it from here:  http://www.stata.com/statalist/archive/2010-12/msg00105.html )
or
(2) you've got an older version of Stata for which some command in my example doesn't work or has changed syntax.

Finally, if none of these fix your issue, try setting -trace on- before running the code and report to us the lines where Stata chokes.

- Eric


__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754
Fax: +979.845.0249
http://ppri.tamu.edu


*
*   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