Can anyone tell me if have any proc , function or any option available with the help of that we can modify a variable without reading the whole dataset in SAS.
It means we don't have to read the whole data set just to modify few variables for e.g Suppose we have 1 billion of record and for one small change we don't want to read whole records.
Thanks!
What do you mean when you say modify? Look at PROC DATASETS. Might have your answer depending on what you mean by modify.
What specific modifications do you have in mind?
Changing variable names, labels and formats can be done with Proc Datasets.
Replacing values can get into some details such as :
Does every value of XXX get changed to YYY or are the changes conditional?
If the changes are conditional then you need to describe the condition.
Is the variable character or numeric? If character what is the current defined length and the required length of the new value (can't stick 10 characters into a length 5 variable).
Answers to the above point to different possible solutions from UPDATE or MODIFY in data step or completely rebuilding possible rereading the data with custom informat or multiple IF/then/else or similar conditional logic.
If the answer is an EVERY value type change then perhaps no change is need to the data at all and may be handled by a custom format.
You can do this with SQL or a data step.
SQL example:
proc sql;
update lib.data1 set a=(select a2 from lib.data2 where id=data1.id)
where id in(select id from lib.data2 where salesdate>'01JAN2020'd)
;
quit;
Or the same thing in a data step:
data lib.data1;
set lib.data2;
where salesdate>'01JAN2020'd;
do until(0);
modify lib.data1 key=id;
if _iorc_ then leave;
a=a2;
replace;
end;
_error_=0;
run;
The data step example as shown needs LIB.DATA1 to be indexed by ID.
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.