Stata beginner here. I am currenly doing research on the trade effects of currency unions and I want to construct a dummy variable which indicates whether an exporter uses a multinational currency (cur_origin) with any trade partner other than the importer (cur_destination) (i.e., an outsider). Below are the first lines of code I used:
Code:
gen byte onein_exporter = 1 if cur1_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" replace onein_exporter = 1 if cur2_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" replace onein_exporter = 1 if cur1_o == "USD" & cur1_d != "USD" & cur2_d != "USD" replace onein_exporter = 1 if cur2_o == "USD" & cur1_d != "USD" & cur2_d != "USD" replace onein_exporter = 1 if cur1_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" replace onein_exporter = 1 if cur2_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" replace onein_exporter = 1 if cur1_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" replace onein_exporter = 1 if cur2_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" replace onein_exporter = 0 if onein_exporter == .
However, since there are many more lines, always writing "replace onein_exporter = 1 if ..." feels a little bit cumbersome and I just wondered whether there is a more simple way to get the same result with less code. Hence, I experimented with the "|" operator...
Code:
#delimit ; gen byte onein_exporter = 1 if cur1_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" | cur2_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" | cur1_o == "USD" & cur1_d != "USD" & cur2_d != "USD" | cur2_o == "USD" & cur1_d != "USD" & cur2_d != "USD" | cur1_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" | cur2_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" | cur1_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" | cur2_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" ;
Code:
gen byte onein_exporter = 1 if cur1_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" #delimit ; replace onein_exporter = 1 if cur2_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" | cur2_o == "GBP" & cur1_d != "GBP" & cur2_d != "GBP" | cur1_o == "USD" & cur1_d != "USD" & cur2_d != "USD" | cur2_o == "USD" & cur1_d != "USD" & cur2_d != "USD" | cur1_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" | cur2_o == "EUR" & cur1_d != "EUR" & cur2_d != "EUR" | cur1_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" | cur2_o == "NZD" & cur1_d != "NZD" & cur2_d != "NZD" ;
Does someone know of a different way to do what I intend?
Best,
Noah
0 Response to How not to write "replace ..." a thousand times when using egen byte?
Post a Comment