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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Select SAS Training centers are offering in-person courses. View upcoming courses for: