<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic שחלוף in SAS Users Group in Israel</title>
    <link>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/%D7%A9%D7%97%D7%9C%D7%95%D7%A3/m-p/692308#M141</link>
    <description>&lt;P class="lia-align-right" style="direction: rtl;"&gt;משימה נפוצה כאשר מעבדים נתונים היא להפוך טבלה ארוכה לרחבה או רחבה לשמנה. הפעולה הזו ידוע כ – Transpose או שיחלוף בעברית.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ניתן לעשות את זה גם בעזרת קוד Data Step ידני אבל חוץ מבמקרים מיוחדים מאוד עדיף להשתמש בפונקציה המובנית ב – SAS לשם כך – &lt;A href="https://documentation.sas.com/?cdcId=pgmsascdc&amp;amp;cdcVersion=9.4_3.5&amp;amp;docsetId=proc&amp;amp;docsetTarget=p1r2tjnp8ewe3sn1acnpnrs3xbad.htm&amp;amp;locale=en" target="_self"&gt;proc transpose&lt;/A&gt;.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;לפני שאנחנו מתחילים לזרוק קוד על המסך אנחנו קודם צריכים להבהיר לעצמנו איך תראה הטבלה שאנחנו רוצים לקבל. אילו עמודות ישארו כמו שהם, אילו עמודה או עמודות מכילות את הנתונים עצמם ואילו עמודה או עמודות יהפכו לשורות או להפך.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;למשל אם נשתמש בטבלה CLASS המוכרת אפשר למשל להחליט שאנחנו רוצים לקחת את שלושת המדדים שיש בה – גיל, גובה ומשקל – עבור כל תלמיד ולהפוך אותם לשורות כך שלכל תלמיד יהיו 3 שורות. כלומר ליצור טבלה ארוכה ודקה יותר עם עמודה חדשה שתכיל את שם המדד שיהיה בכל שורה ועמודה שניה שתכיל את הערך עצמו:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 667px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/50740iEB863C7A68171A70/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;הקוד כדי לבצע את השחלוף הזה הוא:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=SASHELP.CLASS out=CLASS;
	by name;
run;

proc transpose data=CLASS out=CLASS_TRANS;
	by name;
	var age height weight;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודה או עמודות אחרי ה – “by” הן אלו שאנחנו רוצים לבצע את פעולת השחלוף עבור כל אחד ואחד מהערכים שמופיעים בהן. כמו כל דבר ב – SAS עמודות שמופיעות ב – "by" חייבות להיות ממויינות ולכן הוספנו את ה – proc sort בהתחלה.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודות שמופיעות אחרי ה – "var" הן העמודות שהמכילות את הערכים עצמם שבמקרה הזה אותן אנחנו רוצים להמיר לשורות נפרדות עבור כל תלמיד.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;שינוי קטן בקוד יאפשר לנו לתת שמות מוצלחים יותר לעמודות החדשות ש – SAS יצרה עבורנו במקום שמות ברירת המחדל:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CLASS out=CLASS_TRANS_NICE(rename=(col1=Value)) name=Madad ;
	by name;
	var age height weight;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;כמובן שזה גם עובד הפוך. לא מצאתי טבלה שימושית מוכנה מראש אז קודם נייצר אחת בעצמנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	create table CARS as 
	select 
		Make,
		Type,
		avg(Invoice) as Average_Invoice
	from 
		SASHELP.CARS
	group by 
		1,2
	order by 
		1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;עכשיו נגיד שאנחנו רוצים לקבל עמודה נפרדת עבור כל אחד מסוגי המכוניות:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture1.JPG" style="width: 805px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/50741iF308CD996DBAFB97/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture1.JPG" alt="Capture1.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;הקוד כדי לבצע את זה הוא:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CARS out=CARS_TRANS;
	by Make;
	id type;
	var average_invoice;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודה שמופיעה אחרי ה – "id" היא העמודה שעבור כל אחד מהערכים שיש בה תיווצר עמודה חדשה בטבלת הפלט.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;אפשרות שימושית נוספת היא להוסיף קידומת אחידה לכל העמודות החדשות שנוצרות. זה יכול להיות מאוד שימושי כדי ל"תפוס" את כולן ביחד בעיבודים נוספים בהמשך הדרך כפי שהראנו &lt;A href="https://communities.sas.com/t5/SAS-Users-Group-in-Israel/%D7%A0%D7%A7%D7%95%D7%93%D7%95%D7%AA%D7%99%D7%99%D7%9D-%D7%94%D7%AA%D7%97%D7%9C%D7%94-%D7%A9%D7%9C-%D7%99%D7%93%D7%99%D7%93%D7%95%D7%AA-%D7%9E%D7%95%D7%A4%D7%9C%D7%90%D7%94/m-p/653396#M37" target="_self"&gt;פה&lt;/A&gt;.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CARS out=CARS_TRANS_PRE(drop=_name_) prefix=Type_;
	by Make;
	id type;
	var average_invoice;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;אלו רק חלק מהאפשרויות של proc transpose. הוא נראה קצת מורכב אבל החלק הקשה והחשוב ביותר הוא להבין עם עצמו איזו טבלה אנחנו רוצים לקבל ואז לתרגם את זה ל - proc transpose שיגשים לנו את כל החלומות.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;חגי&lt;/P&gt;</description>
    <pubDate>Sat, 17 Oct 2020 17:54:47 GMT</pubDate>
    <dc:creator>Hagay</dc:creator>
    <dc:date>2020-10-17T17:54:47Z</dc:date>
    <item>
      <title>שחלוף</title>
      <link>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/%D7%A9%D7%97%D7%9C%D7%95%D7%A3/m-p/692308#M141</link>
      <description>&lt;P class="lia-align-right" style="direction: rtl;"&gt;משימה נפוצה כאשר מעבדים נתונים היא להפוך טבלה ארוכה לרחבה או רחבה לשמנה. הפעולה הזו ידוע כ – Transpose או שיחלוף בעברית.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;ניתן לעשות את זה גם בעזרת קוד Data Step ידני אבל חוץ מבמקרים מיוחדים מאוד עדיף להשתמש בפונקציה המובנית ב – SAS לשם כך – &lt;A href="https://documentation.sas.com/?cdcId=pgmsascdc&amp;amp;cdcVersion=9.4_3.5&amp;amp;docsetId=proc&amp;amp;docsetTarget=p1r2tjnp8ewe3sn1acnpnrs3xbad.htm&amp;amp;locale=en" target="_self"&gt;proc transpose&lt;/A&gt;.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;לפני שאנחנו מתחילים לזרוק קוד על המסך אנחנו קודם צריכים להבהיר לעצמנו איך תראה הטבלה שאנחנו רוצים לקבל. אילו עמודות ישארו כמו שהם, אילו עמודה או עמודות מכילות את הנתונים עצמם ואילו עמודה או עמודות יהפכו לשורות או להפך.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;למשל אם נשתמש בטבלה CLASS המוכרת אפשר למשל להחליט שאנחנו רוצים לקחת את שלושת המדדים שיש בה – גיל, גובה ומשקל – עבור כל תלמיד ולהפוך אותם לשורות כך שלכל תלמיד יהיו 3 שורות. כלומר ליצור טבלה ארוכה ודקה יותר עם עמודה חדשה שתכיל את שם המדד שיהיה בכל שורה ועמודה שניה שתכיל את הערך עצמו:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 667px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/50740iEB863C7A68171A70/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;הקוד כדי לבצע את השחלוף הזה הוא:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=SASHELP.CLASS out=CLASS;
	by name;
run;

proc transpose data=CLASS out=CLASS_TRANS;
	by name;
	var age height weight;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודה או עמודות אחרי ה – “by” הן אלו שאנחנו רוצים לבצע את פעולת השחלוף עבור כל אחד ואחד מהערכים שמופיעים בהן. כמו כל דבר ב – SAS עמודות שמופיעות ב – "by" חייבות להיות ממויינות ולכן הוספנו את ה – proc sort בהתחלה.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודות שמופיעות אחרי ה – "var" הן העמודות שהמכילות את הערכים עצמם שבמקרה הזה אותן אנחנו רוצים להמיר לשורות נפרדות עבור כל תלמיד.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;שינוי קטן בקוד יאפשר לנו לתת שמות מוצלחים יותר לעמודות החדשות ש – SAS יצרה עבורנו במקום שמות ברירת המחדל:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CLASS out=CLASS_TRANS_NICE(rename=(col1=Value)) name=Madad ;
	by name;
	var age height weight;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;כמובן שזה גם עובד הפוך. לא מצאתי טבלה שימושית מוכנה מראש אז קודם נייצר אחת בעצמנו:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
	create table CARS as 
	select 
		Make,
		Type,
		avg(Invoice) as Average_Invoice
	from 
		SASHELP.CARS
	group by 
		1,2
	order by 
		1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;עכשיו נגיד שאנחנו רוצים לקבל עמודה נפרדת עבור כל אחד מסוגי המכוניות:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture1.JPG" style="width: 805px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/50741iF308CD996DBAFB97/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture1.JPG" alt="Capture1.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;הקוד כדי לבצע את זה הוא:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CARS out=CARS_TRANS;
	by Make;
	id type;
	var average_invoice;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;העמודה שמופיעה אחרי ה – "id" היא העמודה שעבור כל אחד מהערכים שיש בה תיווצר עמודה חדשה בטבלת הפלט.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;אפשרות שימושית נוספת היא להוסיף קידומת אחידה לכל העמודות החדשות שנוצרות. זה יכול להיות מאוד שימושי כדי ל"תפוס" את כולן ביחד בעיבודים נוספים בהמשך הדרך כפי שהראנו &lt;A href="https://communities.sas.com/t5/SAS-Users-Group-in-Israel/%D7%A0%D7%A7%D7%95%D7%93%D7%95%D7%AA%D7%99%D7%99%D7%9D-%D7%94%D7%AA%D7%97%D7%9C%D7%94-%D7%A9%D7%9C-%D7%99%D7%93%D7%99%D7%93%D7%95%D7%AA-%D7%9E%D7%95%D7%A4%D7%9C%D7%90%D7%94/m-p/653396#M37" target="_self"&gt;פה&lt;/A&gt;.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=CARS out=CARS_TRANS_PRE(drop=_name_) prefix=Type_;
	by Make;
	id type;
	var average_invoice;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;אלו רק חלק מהאפשרויות של proc transpose. הוא נראה קצת מורכב אבל החלק הקשה והחשוב ביותר הוא להבין עם עצמו איזו טבלה אנחנו רוצים לקבל ואז לתרגם את זה ל - proc transpose שיגשים לנו את כל החלומות.&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-right" style="direction: rtl;"&gt;חגי&lt;/P&gt;</description>
      <pubDate>Sat, 17 Oct 2020 17:54:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Users-Group-in-Israel/%D7%A9%D7%97%D7%9C%D7%95%D7%A3/m-p/692308#M141</guid>
      <dc:creator>Hagay</dc:creator>
      <dc:date>2020-10-17T17:54:47Z</dc:date>
    </item>
  </channel>
</rss>

