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.
Proc export giving additional quotes to the quoted char values.and if u use data step for that it is giving a space or . To numeric values which is not required . Needs to change nothing.now it is , , but want ,, no space no .for missing numeric value.
... 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
Hi I'm trying to calculate outliners within a datset trying: proc sql; SELECT CASE WHEN a.row_num <= ceil(0.25 * b.total_rows) THEN 1 WHEN a.row_num <= ceil(0.5 * b.total_rows) THEN 2 WHEN a.row_num <= ceil(0.75 * b.total_rows) THEN 3 ELSE 4 END AS quartile, AVG(a.value) AS quartile_value FROM (SELECT value, row_num() AS row_num FROM MYDATASET) AS a INNER JOIN (SELECT count(*) AS total_rows FROM MYDATASET) AS b ON 1=1 GROUP BY quartile; quit; My dataset have three col=sector (char), country (char), value (num) ERROR: Function ROW_NUM could not be located. ERROR: Expression using less than or equal (<=) has components that are of different data types. ERROR: Expression using less than or equal (<=) has components that are of different data types. ERROR: Expression using less than or equal (<=) has components that are of different data types. 1451 quit; I can't use OVER or HAVING or such beacuse of my version of my computer,
... View more
I am trying to perform SG Annotation with BY Variables. In this trivial example, I want one plot with a red arrow for the plot of Male data; and one plot for the females with a green arrow, depending on the value of SEX in SASHELP.CLASS
Here's my code that doesn't work (stealing from the example here).
%sganno
data sgannodata;
set sashelp.class(obs=2);
if sex='M' then do;
%sgarrow(x1=51, x2=30, y1=30, y2=30, linecolor="red")
end;
else if sex='F' then do;
%sgarrow(x1=51, x2=30, y1=30, y2=35, linecolor="green")
end;
keep sex;
run;
proc sort data=sashelp.class out=class;
by descending sex ;
run;
proc sgplot data=class sganno=sgannodata;
scatter x=age y=weight;
by descending sex;
run;
Here's the incorrect output (the correct output would be the red arrow on the males and the green arrow on the females, not both arrows on both plots)
... View more