I have a large number of datasets that contain 30+ of the same variables. I am attempting to append all datasets although the problem is that in one dataset a given variable is a string variable while in another dataset that same variable is a byte variable.

Take the snippet below as an example: In this data set (let's call it dataset 1) has_study, has_separatedining, has_familyroom , has_sunroom and has_rumpusroom are string variables while has_billiardroom is a byte variable. However, in dataset 2, has_billiardroom is now a string variable and perhaps has_study is now a string variable also. How do I efficiently transform all the data into the same type so that I can then append datasets?

The datasets will append only if I use the 'force' command however I lose data.

Array

I know I can convert strings to numeric variables using:
gen study = 0
replace study=1 if has_study=="TRUE"


However, given that I have such a large number of datasets and variables, this is very inefficient. I would like to run the same do.file for each dataset. Is there another way around this issue?