hi ,
iam trying to monitor some financial figures. i have 2 values that i need to work with but i just dont have an idea on how i will write this interms of sas coding. please help
my values are as follows
Trans_Type | Amount |
salary | 10000 |
Cheq dep | 1000 |
Teller dep | 5000 |
my desire results is that any amount that is more than 20% of the salary should be flagged 1. and any amount below 20% of the salary should be flagged 0. anyone please help urgently!!!
thanks in advance
In that case, it will not work. Even i thought the same. We can do one thing, capture the salary in macro variable and using it in the datastep.
data m1;
input type $ amount;
cards;
sal 10000
cheq 2000
teller 5000
;
proc sql noprint;
select amount into : amt from m1 where type='sal';
quit;
data m2;
set m1;
x=&amt.;
if amount/x > 0.20 then flag=1; else flag=0;
run;
~Manohar
hi ,
iam trying to monitor some financial figures. i have 2 values that i need to work with but i just dont have an idea on how i will write this interms of sas coding.
my values are as follows
Trans_Type | Amount |
salary | 10000 |
Cheq dep | 1000 |
Teller dep | 5000 |
my desire results is that any amount that is more than 20% of the salary should be flagged 1. and any amount below 20% of the salary should be flagged 0. anyone please help urgently!!!
thanks in advance
data m1;
input type $ amount;
cards;
sal 10000
cheq 2000
teller 5000
;
run;
data m2;
set m1;
if type='sal' then x=amount;
retain x;
if amount/x > 0.20 then flag=1; else flag=0;
run;
proc print;run;
thanks Manu
you guys are stars i truly appreciate this
What if Salary isn't in the first record but a later record?
In that case, it will not work. Even i thought the same. We can do one thing, capture the salary in macro variable and using it in the datastep.
data m1;
input type $ amount;
cards;
sal 10000
cheq 2000
teller 5000
;
proc sql noprint;
select amount into : amt from m1 where type='sal';
quit;
data m2;
set m1;
x=&amt.;
if amount/x > 0.20 then flag=1; else flag=0;
run;
~Manohar
hi ,
iam trying to monitor some financial figures. i have 2 values that i need to work with but i just dont have an idea on how i will write this interms of sas coding. please help
my values are as follows:
Trans_Type Amount
Salary 10000
Cheq Dep 1000
Sandry Dep 2000
my desire results is that any amount that is more than 20% of the salary should be flagged 1. and any amount below 20% of the salary should be flagged 0. anyone please help urgently!!!
thanks in advance
Please post some more sample data and expected output. You'll need to modify it to match your data structure but it should help you get started.
Proc SQL;
Create table want as
Select a.id, a.type, a.amount, case when a.amount/b.amount >= 0.2 then 1 else 0 as flag
From have as a
Left join have as b
On a.id = b.id
And a.type ne 'Salary' and b.type. = 'Salary';
Quit;
You our can merge data with itself via SQL and then do calculation.
Hi Reeza
thanks for the clarity.
i see that your code joins two tables. how will the code be if the data is contained in one table. like in my sample code provided. how can i compare first value of 'Salary' to other values?
Take a closer look at the code. It joins the table Have to itself, Have.
Thanks Reeza
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 25. Read more here about why you should contribute and what is in it for you!
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.