BookmarkSubscribeRSS Feed
Hagay
SAS Employee

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

 

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

 

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

הגדרת המשתנה מתבצעת ע"י פקודת המאקרו %let – האחוז בהתחלה מגלה מיד שמדובר בפקודת מאקרו – לדוגמא:

%let sort_by=age; * Defining a macro variable called SORT_BY;

בהמשך התוכנית שלנו אנחנו קוראים לערך שיצרנו ע"י שם המשתנה עם תו ה – "&" לפניו וכך אומרים ל – SAS שלפני שהיא מריצה את הקוד תחליף את המשתנה בערך שהגדרנו לתוכו ואז תריץ את מה שמתקבל:

proc sort data=SASHELP.CLASS out=CLASS_BY_&sort_by; * Using it;
	by &sort_by; * Using it again;
run;

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

%let min_age=12;

data CLASS_OVER_&min_age; * Used as part of a string - the output table name;
	set SASHELP.CLASS;
	if age>&min_age; * Used as a number. No need to do any conversion - it is all just text in our code;
run;

אנחנו יכולים להכניס מה שאנחנו רוצים לתוך משתנה מאקרו אפילו פקודות שלמות:

%let sort_by_statement=by sex age ; * It can be any string we want;

proc sort data=SASHELP.CLASS out=CLASS_SORTED;
	&sort_by_statement;
run;

פקודת ה – %let היא רק אחת הדרכים ליצור משתני מאקרו. דרכים נוספות ודברים שיש לשים אליהם לב בעבודה עם משתני המאקרו בשבועות הבאים

 

חגי

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
  • 457 views
  • 1 like
  • 1 in conversation