BookmarkSubscribeRSS Feed
Hagay
SAS Employee

מנוע ה – data step של SAS כולל בתוכו מנגנון מובנה אשר קורא את כל הרשומות מטבלת המקור אחת אחרי השני ושומר אותן לטבלת היעד אחרי כל העיבודים והחישובים שבצענו. מעבר לציון שם טבלת המקור ושם טבלת היעד אנחנו לא צריכים לעשות שום דבר כדי לגרום ללולאה הזו לעבור על כל הרשומות ולבצע עליהן את זממנו.

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

השימוש הבסיסי ביותר הוא לסינון הרשומות כך שנרשום לטבלת היעד רק חלק מהרשומות שבטבלת המקור:

data CLASS_TALL;
	set sashelp.class;
	if height>=65 then output;
run;

שימוש זה הוא כה נפוץ שבדרך כלל עושים שימוש בצורה המקוצרת שלו ואפילו לא שמים לב:

data CLASS_TALL;
	set sashelp.class;
	if height>=65;
run;

שימוש נוסף הוא ייצור מספר רשומות בטבלת היעד עבור כל רשומה בטבלת המקור, כמו למשל:

data CLASS_COPIES;
	set sashelp.class;
	length 
		Copy	8;
	copy=1;
	output;
	copy=2;
	output;
run;

לבסוף אנחנו יכולים גם לנתב את הרשומות מטבלת המקור למספר טבלאות יעד. ע"י שימוש בפקודות SAS יעודיות שניתן להוסיף בעת יצירת טבלה אנחנו גם יכולים לשלוט על מספר מאפיינים ביניהם השדות שירשמו לכל טבלה, השמות שלהם וכו':

data CLASS_TALLS(keep=name age)
	CLASS_NOT_TALLS
	CLASS_OLDS(rename=(sex=Gender))
	CLASS_BOYS(drop=sex compress=yes);
	set sashelp.class;

	if height>=65 then output CLASS_TALLS;
	else output CLASS_NOT_TALLS;

	if age>=13 then output CLASS_OLDS;
	if sex='M' then output CLASS_BOYS;
run;

חגי

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Discussion stats
  • 0 replies
  • 629 views
  • 2 likes
  • 1 in conversation