I tried to use the following code to append tables:
data want;
set have1 have2 have3;
run;
and then a warning message pops out:
WARNING: Multiple lengths were specified for the variable FirstName by input data set(s). This can cause truncation of data.
The column which has problems is either number or character. I'm wondering if there is a way to tell SAS to automatically use the larger lengths for that column.
First of all, when you have variables of conflicting type (not content!) in your datasets, your data step will fail with an error. So you probably have character variables of differing length that contain numeric and alphanumeric values.
To get the maximum length automatically, use the dataset with the longest variable definition first in the set statement.
The proper method to handle all this is to make sure from the outset that your variables follow a common definition. Set the correct length upon creation or import from external data sources.
As @Kurt_Bremser has said, not knowing what structure your data is in comes from not processing it correctly in the first place. What does your surrouding documentation state - i.e. import agreements, data definition documents, standard working practices, data modelling details etc. Always be very explicit about everything, that way you never run into these situations.
proc sql;
create table want as
select *
from have1
outer union corr
select *
from have2
outer union corr
select *
from have3
;
quit;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.