Hey everyone,

I have three files named something like File_1, File_2, File_3, which I am importing and cleaning in a forval i = 1(1)3 {} loop.

File 1 and 3 have a slightly different structure than File 2, so I have included the following if-else statements in the loop to deal with this. The code looks something like this:

forval i = 1(1)3 {
import File_`i', clear
processing common to all files (i.e operations on variables found in all three files)


if `i' == 2 {
separate processing for file 2
(i.e operations on variables only in file 2)
}

else {
processing for files 1 and 3
(i.e operations on variables not in file 2)
}

save File_`i'_clean, replace
}

The first bloc works just fine, but Stata decides to execute the second block regardless of the value of `i'. I'm at my wits end trying to figure out why this could be the cause. Could there be any reason?

I have tried replacing the second block with:
else if `i' == 1 | `i' == 3
if `i' == 1 | `i' == 3
if inlist(`i', 1, 3)

None of these work. Stata just keeps ignoring the logical.

Any help would be appreciated. Unfortunately, I cannot share a concrete example the data since it contains PID. But, errors result from the second block being evaluated for file 2 which does not have those variables.