/* convert numeric to character */ char_year=put(year,4.0); /* convert character to numeric */ char1='1234.56'; num1=input(char,7.);
PROC MIXED manual for mixed models
https://drive.google.com/file/d/1ls8DQj3rLo20xW2LroADhzw56Dhnudc_/view
proc sql;
create table fullsample2 as
select *,
count(flag) as N_students
from fullsample
group by group_school;
run;
proc export data=final
outfile='C:\Users\raw data 2022 02 14\Pairwise Analysis2.xlsx'
dbms=xlsx replace;
sheet='final';
run;
PROC SQL
proc sql;
create table asdf5 as
select *,
count(casenumber) as duplicN,
var(date_var_n) as date_var_n_var,
from same_ref_date_data
group by casenumber , project_year;
run;
Read SAS data without loading formats
options NOFMTERR;
proc transpose data=asdf1 out=asdf1T;
id response_value ;
var _all_;
run;
Functions
When there is a space in between the first part of the value and the second part of the value:
item1=scan(item,1,' ');
item2=scan(item,2,' ');
run;
PROC SQL
This adds columns of new variables to the existing dataset:
proc sql;
create table groupvar2 as
select *,
max(_1_level2var) as _1_level2var_,
max(_1_level1var) as _1_level1var_
from groupvar;
run;
This creates a new dataset that contains the result:
proc sql ;
CREATE TABLE X AS
SELECT AVG(DateModified)
FROM access1.table1;
run;
Capitalization
lowcase, upcase, popcase
PROC MEANS STACK DATA OPTION
proc means data=kaz5 STACKODSOUTPUT ;
class treat;
var Z_GRADE_AVERAGE STEM ;
ods output summary=niko1;
run;
Take out strings at the beginning of character variables (and leave numeric)
digit=anydigit(studentID);
val=substr(studentID,digit);
Take the first and last observations (horizontally)
data one;
input Jan Feb March April;
cards;
11 . 32 .
. 33 22 12
12 . . .
;
data new(drop=i);
set one;
flag='0';
array vars(*) _numeric_;
retain flag;
do i = 1 to dim(vars);
if vars(i) ne . and flag ne '1' then do;
first=vars(i);
flag='1';
first_month=vname(vars(i));
end;
else if vars(i) ne . then do;
second=vars(i);
last_month=vname(vars(i));
end;
end;
if second=. then do;
second = first;
last_month=first_month;
end;
run;
proc print;
run;
Cronbach Alpha using PROC CORR
Essential SAS techniques
Identify duplicate rows using PROC SQL. This returns the number of duplicative rows per ID (e.g., email address)
proc sql;
create table all2 as
select *,
count(email) as duplic_count
from all
group by email;
run;
Export SAS datasets into Excel
proc export data=sashelp.class
outfile='C:\sastest\class.xlsx'
dbms=xlsx replace;
sheet='Class';
run;
PROC SQL and how to normalize/adjust weights (such that the sum of weights = the number of cases in the sample). This runs in any PCs as it uses sashelp.class (the dataset that comes with SAS installation).
proc sql;
create table newdata1 as
select *,
weight * (count(weight)/Sum(weight)) as Adjusted_weight1
from sashelp.class;
proc sql;
create table newdata2 as
select *,
weight * (count(weight)/Sum(weight)) as Adjusted_weight2
from newdata1
group by sex;
Functions
Add _ in between empty spaces in the values (Thanks Sharon):
County=TRANWRD(trim(County)," ","_");
new=substr(x,2,5);
These concatenate variables but keep a space between variabels.
subgroup=compbl(school_level||categorydesc||outcomesubstance2);
subgroup=catx(' ',school_level,categorydesc,outcomesubstance2);
Replace a character with another character (or in this case, I'm replacing "_" with nothing (""), which means I'm removing "_".
Affilication=TRANWRD(Affilication,"_","") ;
Concatenate variables SAS LINK . First variable specified (x1 in this example) will be used to separate variables (e.g., if x1=" ", a blank will be used to separate values from x2 and x3).
x=catx(x1 x2 x3);
Quickly create a specific date variable:
data temp;
x='01APR2016'D;
FORMAT x date9. ;run;
run;
Create a date variable using MDY
FORMAT Query_date date9. ;
Query_date=MDY(1,23,2016);
Create a text file with variables
data _null_;set kaz2t2;
blank=' ';
file "c:\temp\example.txt"; /*you can change this*/
put
(syntax) (500.0);
run;
Remove labels
My example:
proc datasets library=work nolist;
modify all;
attrib _all_ label='';
quit;
Make all values in text variables expressed in capital letters.