Is it possible (change the program) to get nearest to work with by ?
I can not find the answer in my NC151 notes.
Thank you
Benoit Dulong.
**********************************************************************
. set obs 100
obs was 0, now 100
. gen idrep = _n
. genpoisson n1, mu(20)
. genpoisson n2, mu(40)
. gen n = n1+n2
. expand n
(5917 observations created)
. sort idrep
. gen x = uniform()
. gen y = uniform()
. by idrep: nearest x y, id(idpoint) dist(h)
nearest may not be combined with by
r(190);
end of do-file
r(190);
**********************************************************************
program def nearest
*! NJC 1.1.0 10 January 2003
    version 7 
    syntax varlist(min=2 max=2 numeric) [if] [in] , dist(str) [id(str)]
    confirm new var `dist'
    
    if "`id'" != "" {
        confirm new var `id'
    }     
    else local noid "*"
    
    marksample touse
    tokenize `varlist'
    args x y 
    qui { 
        gen double `dist' = .
        `noid' gen long `id' = .
        tempname d
        local n = _N
        
        forval i = 1/`n' {
            forval j = 1/`n' {
                if `touse'[`i'] & `touse'[`j'] & (`i' != `j') {
                    scalar `d' = /*
            */ (`x'[`i'] - `x'[`j'])^2 + (`y'[`i'] - `y'[`j'])^2
                    if `d' < `dist'[`i'] {
                        replace `dist' = `d' in `i'
                        `noid' replace `id' = `j' in `i'
                    }
                }
            }    
        }
        replace `dist' = sqrt(`dist')
        `noid' compress `id'
    } 
end 
**********************************************************************
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/