I have several variables, and they are either missing, or a 1 .
I would like to keep the first non-missing value of the several variables, or return a missing value if all the variables are missing.
I cannot wrap my head around how to do this.
I have searched for a function similar to COALESCE , but have been unsuccessful.
I know that the code below is syntactically incorrect, but I wanted to give a flavor of what I'm trying to accomplish.
I would like to keep the first non-missing value of the several variables, or return a missing value if all the variables are missing.
I cannot wrap my head around how to do this.
I have searched for a function similar to COALESCE , but have been unsuccessful.
I know that the code below is syntactically incorrect, but I wanted to give a flavor of what I'm trying to accomplish.
Code:
clear
input a b c
1 . .
. . .
. . 1
1 . .
. 1 .
. . .
. . .
1 . .
. . 1
end
***** this code works, but feels like a kludge...
egen byte flag_1 = rowmiss(a b c)
recode flag_1 (1/2 = 1 "G") ///
(3 = 0 "N") , gen(flag_calc) test
***** version 1 : code is incorrect
egen flag_1 = 1 if rowmiss(a b c) < 3
replace flag_1 = . if rowmiss(a b c) == 3
***** version 2 : code is incorrect
generate flag_1 = .
replace flag_1 = a if a!= .
replace flag_1 = b if a == . & if b != .
replace flag_1 = c if a == . & if b == . & if c != .
***** version 3 : code is incorrect
generate flag_1 = .
replace flag_1 = 1 if rowmiss(a b c) < 3

Comment