SAS has two data types, numeric and character. When you get any comment about "different types" it means one of the values you used is character and the other is numeric. So the errors come because you compare a character value to numeric.
The bit about different data sets do not behave the same means that the variable for some reason is numeric in one set and character in another. The single most likely cause of this that you are bringing data into SAS using Proc Import or a wizard/tool that uses Proc Import and there is something in the source file that makes SAS think one of the source columns should be treated as character.
Common causes values that contain text like "NA" "NULL" or "MISSING" or some character attached to a number such as "<10" or possibly a range indicated like "10-13".
If you are reading multiple source files that should have the same structure and variable then Data step code is the preferred method to guarantee that each of the created SAS data sets has the same behavior.
The bit about import may be more critical if your files start as spread sheets as those do not impose many rules on what ends up in any given column. Also, if you have some text files, such as CSV, that are opened by spreadsheet software and then saved you may have had the contents of columns actually changed.
... View more