BookmarkSubscribeRSS Feed
Hagay
SAS Employee

מנוע ה – DATA STEP של SAS מעבד טבלה ע"י קריאה של כל רשומה בתורה, ביצוע חישובים עליה כיד הדמיון הטובה עלינו ורישום הרשומה המעובדת לטבלת הפלט. עקב כך, כל רשומה חיה לבדה בעולם ללא קשר לרשומה הקודמת או הבאה. אם אנחנו בכל זאת רוצים לבצע חישובים המערבים יותר מרשומה אחת אנחנו צריכים לבקש זאת באופן מפורש, למשל ע"י פקודת ה – retain או פונקציית ה – lag שנדבר עליהם בעתיד.

 

היום נדבר על אחד מהחישובים הנפוצים ביותר הדורשים יותר מרשומה אחת: סכימה מצטברת. מכיוון שחישוב זה כה נפוץ SAS המציאו תחביר מקוצר מיוחד בדיוק למטרה הזו:

data CLASS1;
	set SASHELP.CLASS;
	Row_Counter+1;
run;

אפשר להשתמש באותו תחביר גם כדי לצבור ערכים של משתנה כלשהו:

data CLASS2;
	set SASHELP.CLASS;
	Age_Accum+age;
run;

או אפילו לצבור תוצאה של פונקציה או נוסחא:

data CLASS3;
	set SASHELP.CLASS;
	Age_Accum+ifn(weight<100,age,0);
run;

ולבסוף עם נשלב את הפטנט הזה עם יכולות ה – by process-ים שנדבר גם עליהם בעתיד נוכל לבצע חישובים מצטברים לכל תת קבוצה בנפרד:

proc sort data=SASHELP.CLASS out=CLASS4;
	by sex;
run;
data CLASS4;
	set CLASS4;
	by sex;
	if first.sex then Age_Accum=0;
	Age_Accum+age;
run;

חגי