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: Tracking Replacements Made to Variables
From 
 
Eric Booth <[email protected]> 
To 
 
"<[email protected]>" <[email protected]> 
Subject 
 
Re: st: Tracking Replacements Made to Variables 
Date 
 
Tue, 1 Feb 2011 03:20:08 +0000 
<>
*************!
clear
inp yr        var1
1961    15
1962     .
1963    20
1964     .
1965    30
end
g var2 = var1  
forval n = 1/`=_N' {
**tracking**
	**display**
if mi(var1[`n']) di in y "var 1, year `=yr[`n']'. Avg of `=yr[`n'-1]' and `=yr[`n'-1]'."
	**stored in -char-s for later retrieval**
if mi(var1[`n']) char var1[obs`n'] "var 1, year `=yr[`n']'. Avg of `=yr[`n'-1]' and `=yr[`n'-1]'."
**replace**
replace var2 = (var1[_n-1]+var1[_n+1])/2 if mi(var1)
  }
  char li        //list char for changes obs
**also, take a look at -impute-, e.g.
impute var1 yr, g(var3)
*************!
**watch for wrapping issues in code above**
- Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754
On Jan 31, 2011, at 3:13 PM, Christopher Lanoue wrote:
> Hi,
> My problem is that I am trying to keep track of changes that I make to
> my data using STATA. For instance if I have data such as:
> 
> yr        var1
> 1961    15
> 1962     .
> 1963    20
> 1964     .
> 1965    30
> 
> and I want to take the average of the two data points to fill in the
> missing values.
> 
> I run replace var1 = (var1[_n-1]+var1[_n+1])/2 if var1 == . to
> accomplish this task, but STATA simply outputs (2 changes made) to the
> display. Is there any way to capture the changes STATA makes, i.e.
> loop through the changes (if the changes are saved somewhere) and
> output something like "var 1, year 1962. Average of 1961 and 1963."?
> If this is not possible, is there are a way to use subscripts on the
> variable so that I can loop through each value and if a change is
> made, output the string above, i.e. replace var1[`i'] = .... and then
> display "var 1, yr[`i']. Average of yr[`i'-1] and yr[`i']+1."
> Any help would be greatly appreciated.
> Thanks in advance,
> Chris
> *
> *   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/