BookmarkSubscribeRSS Feed
Hagay
SAS Employee

עד עכשיו התמקדנו בעיקר ביכולות של SAS במנוע העיבוד שנקרא Data Step שבו SAS קוראת טבלה מסוימת רשומה-רשומה ושומרת את התוצרים לטבלה. בנוסף ל – Data Step, שבשבועות האחרונים רק נגענו בקצה קצהו של מגוון היכולות שלו, SAS כוללת גם מאות proc-ים שונים המאפשרים לנו לבצע עיבוד מסוים על כלל הנתונים בטבלה. יש proc (קיצור של Procedure) שמאפשר לנו לבצע רגרסיה לינארית, יש proc שמאפשר לנו לבצע אופטימיזציה וכך והלאה.

אחד מה – proc היותר פשוטים אך השימושים הוא proc rank. ה – proc הזה כולל מספר יכולות ונתחיל מהמתבקשת ביותר מהשם שלו – דירוג של כל הרשומות שלנו לפי שדה מסוים:

proc rank data=sashelp.class out=class;
	var height;
	ranks height_order;
run;

rank.JPG

קיבלנו טבלה המכילה עמודה חדשה בשם height_order עם דירוג הגובה של כל תלמיד. Joyce היא הנמוכה ביותר ולכן היא קיבלה את הערך 1, Louise השנייה הכי נמוכה עם הערך 2 וכך הלאה.

אנחנו גם יכולים לבקש שהדירוג יבוצע הפוך, כלומר שהתלמיד הגבוה ביותר יקבל את הדירוג 1 ע"י האופציה descending:

proc rank data=sashelp.class out=class descending;
	var height;
	ranks height_order;
run;

אם הרצתם את הקוד בעצמכם שמתם לב שחלק מהתלמידים קיבלו דירוג שהוא לא מספר שלם כמו למשל Janet ו – Jeffery ששניהם קיבלו דירוג של 8.5. הסיבה היא שהגובה של שניהם זהה ולכן לא ניתן להחליט מי יקבל את הדירוג 8 ומי את הדירוג 9 ולכן SAS עשתה משפט שלמה ונתנה לשניהם דירוג של 8.5. אנחנו יכולים לשלוט על הדירוג במקרה של תיקו בעזרת האופציה ties אשר יכול לקבל את הערך high ובמקרה הזה שניהם יקבלו את הדירוג 9, האופציה low תיתן לשניהם את הערך 8, ואילו ברירת המחדל mean תיתן להם את הממוצע שהוא, כפי שראינו 8.5.

 

כמובן שניתן גם לבצע את הדירוג בנפרד לכל קבוצת נתונים בעזרת ידידנו הותיק by-processing:

proc sort data=sashelp.class out=class;	
	by sex;
run;

proc rank data=class out=class;
	by sex;
	var height;
	ranks height_order;
run;

שימוש נוסף ב – proc rank הוא לחלוקת הנתונים שלנו לקבוצות כמו למשל רבעונים, עשירונים, אחוזונים וכו'. האופציה השולטת על זה היא groups שבעזרתה אנחנו מחליטים על מספר הקבוצות, 10 עבור עשירונים, 100 עבור אחוזונים וכך הלאה:

proc rank data=sashelp.cars out=cars groups=10;
	var msrp weight; * Can ask to process several variables at once;
	ranks MSRP_Groups Weight_Groups;
run;

יש רק לשים לב שמספרי הקבוצות מתחילים ב – 0, כלומר העשירון הגבוה ביותר מקבל את הערך 9 (ולא 10).

 

חגי

2 REPLIES 2
Uri74
Calcite | Level 5
הי. לא ברור מה נותן השילוב של groups עם ק משתנים
Hagay
SAS Employee

שלום @Uri74 ,

 

לא הבנתי את השאלה. מה הכוונה "עם ק משתנים"?

 

תודה,

חגי