BookmarkSubscribeRSS Feed
Hagay
SAS Employee

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

 

לשם כך ניתן להיעזר בשתי פונקציות ששמן whichn ו – whichc – הראשונה היא עבור עמודות המכילות ערכים נומרים והשנייה עבור עמודות המכילות מחרוזות.

 

השימוש דורש מספר שלבים אז כדאי שנתחיל:

data EXAMPLE;
	set SASHELP.PRICEDATA;
	length 
		Highest_Value	8
		Highest_Value_Column	$32;

	array p{*} price:; * (1);

	Highest_Value=max(of p[*]); * (2);
	call vname(p[whichn(Highest_Value, of p[*])], Highest_Value_Column); * (3);
run;

בשלב הראשון אנחנו צריכים להכניס את כל העמודות הרלוונטיות למערך – הקוד בשורה (1) עושה בדיוק את זה.

 

בשלב השני אנחנו מוצאים את הערך שמעניין אותנו מבין הערכי שבמערך. אם אנחנו מעוניינים, למשל, בערך הגבוה ביותר הפונקציה max, שדיברנו עליה בשבוע שעבר, מחזירה לנו את הערך הנדרש. שורה (2) גם שומרת אותו לתוך משתנה.

 

בשלב השלישי קורה הקסם האמיתי. הפונקציה whichn מחזירה לנו את האינדקס (כלומר מספר העמודה) במערך שיצרנו שמכילה את הערך שבמשתנה Highest_Value. אנחנו משתמשים באינדקס כדי לאתר את העמודה הנדרשת בתוך המערך ומעבירים אותה לפונקציה vname שמחזירה לנו את השם שלה.

 

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

 

חגי

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Discussion stats
  • 0 replies
  • 267 views
  • 1 like
  • 1 in conversation