Recently in the SAS Community Library: SAS' @StuartRogers provides a close look at the new Microsoft Entra Gallery application and details how it can be used.
Good morning – I have basic knowledge of SAS EG. I usually make minor edits on existing program but I am trying to understand early delinquency rate by cohorts and have no idea how to go about it.
I have the following two tables and data fields:
Performance Table
loan_nbr : Unique identifier for each mortgage. Datatype varchar2.
entity_id : The code that identifies the entity. Datatype varchar2.
mthly_activity_dte : As of date. Datatype is char (YYYYMM).
active_flag : Flag to identify if the loan is in the entity's current book of business. A = Active N = Not Active.
loan_status_cde : The status of the mortgage. For active or delinquent mortgages, it is the status as of the mthly_activity_dte.
00 = Current
01 = 30 - 59 days delinquent
02 = 60 - 89 days delinquent
03 = 90 - 119 days delinquent
04 = 120 - 179 days delinquent
05 = 180+ days delinquent
06 = In Foreclosure
cur_upb_amt : The outstanding unpaid principal balance of the loan as of the mthly_activity_dte.
lpi_dte : The date of the last paid installment for the loan. Datatype is char (YYYYMMDD).
WLM table
loan_nbr : Unique identifier for each mortgage. Datatype varchar2.
entity_id : The code that identifies the entity. Datatype varchar2.
first_pmt_dte : The date of the first scheduled mortgage payment to be made by the borrower under the terms of the mortgage. Datatype is char (YYYYMMDD).
orig_dte : The date the mortgage was originated. Datatype is char (YYYYMMDD).
I am trying to pull the rate of loans that ever went 90+ delinquent (loan_status_cde = 03, 04, 05, 06) for the first year by month since first payment date. Similar to the table below.
Origination Year
Months Since First Payment Due Date
1
2
3
4
5
6
7
8
9
10
11
12
Year
Year
Year
Year
... View more
Hi, I have a SAS dataset wherein date format is incorrect and the same is to be corrected.
Please help in the matter.
data A; input Employee_Id $ Date Date9. ; cards;
70202028 - 04JAN2023;
70204018 - 04SEP2023;
70172038 - 27MAR2023;
run;
data want;
set a;
70202028 - 01APR2023; /*to be changed*/
70204018 - 09APR2023; /*to be changed*/
70172038 - 27MAR2023; /*this is correct and it should not be changed*/
run;
... View more
There have been quite a few spam questions over the past few months where it took sometimes days until they got removed.
Proposal
Implement an automated process that moves questions from the visible list to some hidden queue for investigation if marked by multiple users an inappropriate content.
To avoid that this process can get misused: Only include users that marked the question if they are not New Users but already on a certain level (to exclude fake users).
And just thinking:
Eventually request from New Users for their first few post some additional identification step when posting a question to make it a bit harder to automate posting such questions.
... View more
Wondering about methods to hide a row in PROC TABULATE.
Suppose I have a simple table with DATE in rows, PASS in column and have a total row. So daily data for April like:
data have ;
do date='01Apr2024'd to '30Apr2024'd ;
do id=1 to 5 ;
pass=ranuni(9)<.3 ;
output ;
end ;
end ;
format date date9. ;
run ;
proc tabulate data=have;
class date pass ;
tables (date all),pass ;
run ;
I want to make that table, but show only the rows for Apr 24 -Apr 30, and the ALL row. But I want the ALL row to reflect all 30 days, even though the table only shows rows for 7 days.
In my mind, I want the table as above, but just hide the rows for Apr 1 - Apr 23.
My first thought is to extend my data to have data as is for April 24-30, and then output all the rows again with date set to some arbitrary value that I can use to make an "ALL" row. So something like:
data want ;
set have ;
if date>='24Apr2024'd then output ;
date='09Sep2099'd ;
output ;
run ;
proc format ;
value datef
'09Sep2099'd='01Apr2024 - 30Apr2024'
other=[date9.]
;
run ;
proc tabulate data=want;
class date pass ;
tables date,pass ;
format date datef. ;
run ;
That works and gives me the desired output:
----------------------------------------------------------
| | pass |
| |-------------------------|
| | 0 | 1 |
| |------------+------------|
| | N | N |
|------------------------------+------------+------------|
|date | | |
|------------------------------| | |
|24APR2024 | 3.00| 2.00|
|------------------------------+------------+------------|
|25APR2024 | 3.00| 2.00|
|------------------------------+------------+------------|
|26APR2024 | 4.00| 1.00|
|------------------------------+------------+------------|
|27APR2024 | 3.00| 2.00|
|------------------------------+------------+------------|
|28APR2024 | 5.00| .|
|------------------------------+------------+------------|
|29APR2024 | 4.00| 1.00|
|------------------------------+------------+------------|
|30APR2024 | 4.00| 1.00|
|------------------------------+------------+------------|
|01Apr2024 - 30Apr2024 | 113.00| 37.00|
----------------------------------------------------------
But I'm curious about other options. It almost feels like I could do this with a MULTILABEL format and a CLASSDATA dataset, but in the end I don't think that will work.
I will be using ODS for the output (probably ODS POWERPOINT). So I guess I could try setting a STYLE attribute like ROWHEIGHT=0 for some rows (using CLASSLEV), and see if TABULATE will let me 'hide' a row that way.
... View more