I have program like this
DATA TEST;
SET TEST;
REGID1=(REGNUM)="BLR");
RUN;
I not able to understand this code what is happening here. Need quick help.
@veeresh10 wrote:
I have program like this
DATA TEST;
SET TEST;
REGID1=(REGNUM)="BLR");
RUN;
I not able to understand this code what is happening here. Need quick help.
That particular code shown will do nothing except throw an error about mismatched parentheses.
If the code were like in your question subject line as below:
DATA TEST; SET TEST; REGID1=(REGNUM="BLR"); RUN;
Then the intent would likely be that the variable Regid1 to be assigned a numeric value of 1 when the variable Regnum="BLR" and 0 otherwise. I say intent because that might be affected by the presence of the variable Regid1 if it is already in the the data set Test. SAS will return a numeric 1 for any logic comparison that is true and 0 when it is false.
Suggestion: When you have questions about how code behaves run the code. If you don't understand then copy from the LOG the data step or procedure code with all notes, warnings and errors. Then on the forum open a text box using the </> icon and paste all the next.
The log would be helpful because it would have shown the error generated by your posted code. If the code runs then there might be messages about 'conversion of numeric to text' which might happen if the varaible Regid1 already exists on the data set test and is a character variable.
Warning: Habitual use of code with the same data set on the Data and Set statements like below completely replaces the original Test data set. For new programmers this is likely to result in questions about "why is this value/variable/observartion here or missing as logic errors but not syntax errors execute. While learning basic code I strongly recommend always creating an different output data set so you can see the differences between the input and output data (Hint: there is a procedure called COMPARE to actually do that task)
data test; set test; /* other code*/ run;
@veeresh10 wrote:
I have program like this
DATA TEST;
SET TEST;
REGID1=(REGNUM)="BLR");
RUN;
I not able to understand this code what is happening here. Need quick help.
That particular code shown will do nothing except throw an error about mismatched parentheses.
If the code were like in your question subject line as below:
DATA TEST; SET TEST; REGID1=(REGNUM="BLR"); RUN;
Then the intent would likely be that the variable Regid1 to be assigned a numeric value of 1 when the variable Regnum="BLR" and 0 otherwise. I say intent because that might be affected by the presence of the variable Regid1 if it is already in the the data set Test. SAS will return a numeric 1 for any logic comparison that is true and 0 when it is false.
Suggestion: When you have questions about how code behaves run the code. If you don't understand then copy from the LOG the data step or procedure code with all notes, warnings and errors. Then on the forum open a text box using the </> icon and paste all the next.
The log would be helpful because it would have shown the error generated by your posted code. If the code runs then there might be messages about 'conversion of numeric to text' which might happen if the varaible Regid1 already exists on the data set test and is a character variable.
Warning: Habitual use of code with the same data set on the Data and Set statements like below completely replaces the original Test data set. For new programmers this is likely to result in questions about "why is this value/variable/observartion here or missing as logic errors but not syntax errors execute. While learning basic code I strongly recommend always creating an different output data set so you can see the differences between the input and output data (Hint: there is a procedure called COMPARE to actually do that task)
data test; set test; /* other code*/ run;
@veeresh10 wrote:
I have program like this
DATA TEST;
SET TEST;
REGID1=(REGNUM)="BLR");
RUN;
I not able to understand this code what is happening here. Need quick help.
As posted, the code will only result in a syntax ERROR (one opening bracket, but two closing brackets).
But if that line is actually
REGID1=(REGNUM="BLR");
then the comparison REGNUM="BLR" is evaluated, and the (boolean) result stored in REGID1.
The code is equivalent to
if regnum = "BLR"
then regid1 = 1;
else regid1 = 0;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.