method1: check the joinby in Stata
use sample.dta, clear
ren roa roa_sample
merge 1:m year industry using match.dta, unmatched(master)
gen diff = abs(roa_sample - roa)
gsort year industry diff
by year industry: keep if _n == 1
Method2
use sample, clear
gen id = _n
local record = `c(N)'
forvalue i = 1 / `record' {
use sample, clear
keep if id == `i'
local a = year[1]
local b = industry[1]
local c = roa[1]
use match, clear
keep if year = `a'
keep if industry = `b'
gen diff = abs( roa - `c')
sort diff
keep if _n == 1
gen id = `i'
tempfile f`i'
save `f`i''
}
use `f1', clear
forvalue i = 2 / `record' {
append using `f`i''