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

# Re: st: How can I replace missing values with the variable's first nonmissing value?

 From Nick Cox To statalist@hsphsun2.harvard.edu Subject Re: st: How can I replace missing values with the variable's first nonmissing value? Date Sun, 12 Aug 2012 09:03:33 +0100

```I only -replace-d the first block of missing values. To -replace- all
of them, use

... if missing(x)

Nick

On Sat, Aug 11, 2012 at 9:04 PM, Airey, David C
<david.airey@vanderbilt.edu> wrote:
> .
>
>> A similar way to do it:
>>
>> gen obs = _n
>> su obs if !missing(x), meanonly
>> replace x = x[r(min)] if _n < r(min)
>
> What's missing in your solution? It doesn't
> work when I append to my code...
>
> -Dave
>
>
> clear
> set obs 100
> set seed 1967
> gen x = runiform()
> gen y = runiform()
> replace x = . if y > 0.8 // 20% missing
> drop y
>
> gen obs = _n
> su obs if !missing(x), meanonly
> replace x = x[r(min)] if _n < r(min)
>
>               x   obs
>   1.   .1224991     1
>   2.   .9317513     2
>   3.    .268727     3
>   4.          .     4
>   5.          .     5
>   6.   .3401332     6
>   7.   .6752468     7
>   8.   .3403953     8
>   9.   .5833964     9
>  10.   .3562438    10
>  11.   .5706896    11
>  12.   .2602532    12
>  13.   .5183807    13
>  14.   .2311059    14
>  15.   .6327367    15
>  16.   .8565149    16
>  17.   .3864231    17
>  18.   .2451925    18
>  19.   .6647257    19
>  20.   .3576449    20
>
> clear
> set obs 100
> set seed 1967
> gen x = runiform()
> gen y = runiform()
> replace x = . if y > 0.8 // 20% missing
> drop y
> gen notmissing = _n if !missing(x)
> egen r1 = min(notmissing)
> gen r2 = x[r1]
> gen x2 = x
> replace x2 = r2 if missing(x)
> drop notmissing r1 r2
>
> list in 1/20, clean
>
>               x         x2
>   1.   .1224991   .1224991
>   2.   .9317513   .9317513
>   3.    .268727    .268727
>   4.          .   .1224991
>   5.          .   .1224991
>   6.   .3401332   .3401332
>   7.   .6752468   .6752468
>   8.   .3403953   .3403953
>   9.   .5833964   .5833964
>  10.   .3562438   .3562438
>  11.   .5706896   .5706896
>  12.   .2602532   .2602532
>  13.   .5183807   .5183807
>  14.   .2311059   .2311059
>  15.   .6327367   .6327367
>  16.   .8565149   .8565149
>  17.   .3864231   .3864231
>  18.   .2451925   .2451925
>  19.   .6647257   .6647257
>  20.   .3576449   .3576449
>
>
>
> *
> *   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/
```