Monday 17 July 2017

Sas เคลื่อนไหว เฉลี่ย อาร์เรย์


ฉันมีข้อมูลต่อไปนี้: CustID NGIF RAMN RFA1 2001 6 52 1 2002 1 23 1 2003 8 99 1 2004 20 100 4 2005 11 114 3 2006 9 138 1 2007 7 105 3 2008 15 190 2 2009 27 297 1 2010 22 207 1 2011 19 171 2 ฉันต้องการคำนวณสำหรับแต่ละระดับ RFA1 (ซึ่งเป็น 1-4) ค่าเฉลี่ย (Total RAMN สำหรับระดับ RFA1 ทั้งหมดของระดับ RFA1 นั้น) โดยใช้อาร์เรย์ หากปราศจากอาร์เรย์ถ้าฉันแยกตัวออกและทำผลงานฉันจะได้รับผลลัพธ์ในระดับบุคคล ต่อไปนี้เป็นรหัส: ปัญหาของฉันคือฉันจะเขียนรหัสนี้สำหรับทุก 4 ระดับของ RFA1 โดยใช้อาร์เรย์ ถาม 23 ก. ย. 14 ที่ 3:49 ขอบคุณสำหรับคำตอบของคุณ Joe ฉันได้ลองนี้กับ PROC MEANS และใช่พวกเขากำลังทำสิ่งที่จำเป็น แต่ฉันกำลังเรียนรู้เกี่ยวกับเอสเอเอสและเรียนรู้เพิ่มเติมเกี่ยวกับ SAS และต้องการเรียนรู้อาร์เรย์ด้วย ดังนั้นฉันพยายามที่จะแก้ปัญหาโดยใช้อาร์เรย์ ฉันคิดว่ากับ 39amp39 ฉันเริ่มต้นตัวแปรสามตัวในหนึ่งประโยคขึ้นอยู่กับเงื่อนไขหาก โปรดให้อภัยฉันสำหรับความไม่รู้ของฉันและแจ้งให้เราทราบว่าฉันจะผิดพลาด ndash Charlotte 23 ก. ย. 14 เวลา 14: 51 ดู MACMA1 ในห้องสมุดตัวอย่าง SASQC ตัวอย่างก่อนหน้านี้แสดงให้เห็นว่าคุณสามารถสร้างแผนภูมิเฉลี่ยเคลื่อนไหวโดยใช้ข้อมูลดิบ (การวัดกระบวนการ) ได้อย่างไร อย่างไรก็ตามในหลาย ๆ แอพพลิเคชั่นข้อมูลจะถูกจัดเป็นสถิติสรุปของกลุ่มย่อย ตัวอย่างนี้แสดงวิธีการใช้คำสั่ง MACHART กับข้อมูลประเภทนี้ ชุดข้อมูลต่อไปนี้ (CLIPSUM) ให้ข้อมูลจากตัวอย่างก่อนหน้านี้ในรูปแบบสรุป: รายชื่อ CLIPSUM แสดงในรูปที่ 21.3 มีข้อสังเกตเดียวสำหรับแต่ละกลุ่มย่อย (โปรดจำไว้ว่ากลุ่มย่อยจะมีการจัดทำดัชนีตาม DAY) ตัวแปร GAPX มีความหมายของกลุ่มย่อย GAPS ตัวแปรจะมีค่าเบี่ยงเบนมาตรฐานของกลุ่มย่อยและ GAPN ตัวแปรจะมีตัวอย่างขนาดย่อย (ซึ่งเป็นทั้งหมด 5 ตัว) ชุดข้อมูล CLIPSUM รูปภาพ 21.3: ชุดข้อมูลสรุปข้อมูล CLIPSUM คุณสามารถอ่านชุดข้อมูลนี้โดยระบุว่าเป็นชุดข้อมูล HISTORY ที่ระบุไว้ในคำสั่ง PROC MACONTROL ดังต่อไปนี้: แผนภูมิค่าเฉลี่ยเคลื่อนที่ที่แสดงผลจะแสดงในรูปที่ 21.4 เนื่องจากตัวเลือก LINEPRINTER ถูกระบุไว้ในคำสั่ง PROC MACONTROL จะมีการพิมพ์เอาท์พุทเครื่องพิมพ์แบบบรรทัด เครื่องหมายดอกจัน () ที่ระบุในเครื่องหมายคำพูดเดี่ยวหลังตัวแปรย่อยกลุ่มย่อยระบุถึงตัวอักษรที่ใช้ในการทำจุดแจกแจง อักขระนี้ต้องเป็นไปตามเครื่องหมายเท่ากับ โปรดทราบว่า GAP ไม่ใช่ชื่อของตัวแปร SAS ในชุดข้อมูล แต่เป็นคำนำหน้าทั่วไปสำหรับชื่อตัวแปร SAS สามตัว GAPX, GAPS และ GAPN ตัวต่อท้าย X S และ N หมายถึงค่าเฉลี่ย ส่วนเบี่ยงเบนมาตรฐาน . และขนาดตัวอย่าง ตามลำดับ ดังนั้นคุณสามารถระบุตัวแปรสรุปย่อยสามกลุ่มได้ในข้อมูลประวัติที่ตั้งด้วยชื่อเดียว (GAP) ซึ่งเรียกว่ากระบวนการนี้ จำเป็นต้องมีตัวแปร GAPX, GAPS และ GAPN ชื่อ DAY ที่ระบุหลังจากเครื่องหมายดอกจันคือชื่อของกลุ่มย่อยตัวแปร การย้ายแผนภูมิเฉลี่ยสำหรับการวัดค่าช่องว่างรูปที่ 21.4: แผนภูมิเฉลี่ยถ่วงน้ำหนักที่มีการถ่วงน้ำหนักสม่ำเสมอจากข้อมูลสรุปโดยทั่วไปชุดข้อมูลป้อนข้อมูลประวัติที่ใช้กับคำสั่ง MACHART ต้องมีตัวแปรต่อไปนี้: ตัวแปรย่อยกลุ่มตัวแปรตัวแปรตัวแปรย่อยกลุ่มย่อยตัวแปรตัวแปรย่อยย่อยตัวแปร , ชื่อของกลุ่มย่อยหมายถึงส่วนเบี่ยงเบนมาตรฐานและตัวแปรขนาดตัวอย่างต้องเริ่มต้นด้วยชื่อกระบวนการที่ระบุไว้ในคำสั่ง MACHART และจบด้วยอักขระต่อท้ายพิเศษ X S และ N ตามลำดับ หากชื่อไม่ปฏิบัติตามอนุสัญญานี้คุณสามารถใช้ตัวเลือก RENAME ในคำสั่ง PROC MACONTROL เพื่อเปลี่ยนชื่อตัวแปรสำหรับระยะเวลาขั้นตอนของขั้นตอน MACONTROL โดยสรุปการตีความกระบวนการขึ้นอยู่กับชุดข้อมูลอินพุท หากมีการอ่านข้อมูลดิบโดยใช้ตัวเลือกข้อมูล (เช่นเดียวกับในตัวอย่างก่อนหน้า) กระบวนการคือชื่อของตัวแปร SAS ที่มีการวัดกระบวนการ ถ้าข้อมูลสรุปถูกอ่านโดยใช้ตัวเลือกประวัติ (เช่นในตัวอย่างนี้) กระบวนการเป็นคำนำหน้าทั่วไปสำหรับชื่อของตัวแปรที่มีข้อมูลสรุป สำหรับข้อมูลเพิ่มเติมโปรดดู 34 ชุดข้อมูลประวัติ 34 13 13moving เฉลี่ยกับช่วงวันที่ย้ายเฉลี่ยกับช่วงวันที่ย้ายค่าเฉลี่ยกับช่วงวันที่ Im ใหม่เพื่อ SAS และฉันมีปัญหาบางอย่างกับการคำนวณค่าเฉลี่ยเคลื่อนที่ตามวันที่และกลุ่มภายในชุดข้อมูล โดยทั่วไปฉันพยายามคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับการสังเกตแต่ละครั้งในช่วง 90 วันที่ผ่านมา การสังเกตแต่ละครั้งมีวันที่ ฉันยังต้องจัดกลุ่มพวกเขาเพื่อให้ค่าเฉลี่ยเคลื่อนที่จะขึ้นอยู่กับกลุ่มเท่านั้น กล่าวอีกนัยหนึ่งถ้าฉันจัดกลุ่มตามผลไม้แอปเปิ้ลจะมีค่าเฉลี่ยเคลื่อนที่และ orages ฯลฯ ฉันรู้ว่าฉันจะต้องจัดเรียงข้อมูลก่อนจากนั้นใช้คำสั่ง retain ฉันกำลังคิดที่จะทำมาโครด้วย ฉันเริ่มต้นนี้ แต่ดูเหมือนจะไม่มีส่วนใดในการทำงาน คนสามารถช่วยฉันได้หรือไม่? ฉันรู้วิธีการเรียงลำดับ แต่ฉันยังรู้วิธีหาค่าเฉลี่ย แต่ไม่ได้จัดกลุ่มอย่างถูกต้อง มันเป็นเพียงการให้ฉันค่าของการสังเกต ฉันก็พยายามที่จะทำกับ SQL แต่ไม่ได้ทำงานอย่างใดอย่างหนึ่ง นี่คือสิ่งที่ฉันเกิดขึ้น proc sql create table data. movingavg as a., mean (basis) as moving จาก xx ตามวันที่กลุ่มผลิตภัณฑ์ RE: ค่าเฉลี่ยเคลื่อนที่โดยใช้ช่วงวันที่ที่ไม่ทำงานอย่างใดอย่างหนึ่ง ข้อมูลใหม่ชุดเก่าโดย id retain basis ถ้า date90 แล้วเฉลี่ยเฉลี่ย (basis) run RE: ค่าเฉลี่ยเคลื่อนที่โดยใช้ช่วงวันที่นี่คือตัวอย่างของชุดข้อมูลของฉัน วันที่ของผลิตภัณฑ์แอปเปิลอาจ 20 4 march2 สีส้ม 3 apple april 3 กล้วย jan31 33 apple feb13 88 apple dec2 12 สิ่งที่ฉันต้องการคือค่าเฉลี่ยเคลื่อนที่ที่ใช้งานของ 90 วันที่ผ่านมาของผลิตภัณฑ์ขึ้นอยู่กับจำนวนพื้นฐาน ขอโทษสำหรับโพสต์หลาย แต่หลังจากที่ฉัน reread โพสต์ก่อนหน้าของฉันดูเหมือนสับสนเป็นสิ่งที่ฉันพยายามที่จะทำ ขอบคุณครับ RE: ค่าเฉลี่ยเคลื่อนที่ที่มีช่วงวันที่ klaz2002 (โปรแกรมเมอร์) 25 Sep 07 16:00 ฉันต้องเริ่มต้นด้วยการกล่าวขอบคุณสำหรับคำถามนี้ เพราะมันทำให้ฉันไม่มีเวลาพักผ่อนจนกว่าฉันจะสามารถแก้ปัญหาได้ ให้ฉันระบุสิ่งที่ฉันเชื่อว่าเป็นความต้องการของคุณเพียงเพื่อให้คุณและฉันอยู่ในหน้าเดียวกัน ต้องการ 1) คุณต้องการมีค่าเฉลี่ยเคลื่อนที่ของ 90 วันที่ผ่านมาของข้อมูลตามชื่อผลิตภัณฑ์ ความหมายว่าสำหรับผลิตภัณฑ์ชิ้นเดียว (เช่นแอปเปิ้ล) คุณสนใจเฉพาะค่าพื้นฐานของผลิตภัณฑ์นั้นที่จะย้อนกลับไป 90 วัน 2) ฉันคิดว่าคุณมีหนึ่ง (1) เร็กคอร์ดต่อผลิตภัณฑ์ต่อวัน นั่นหมายความว่าคุณไม่มีมูลค่าพื้นฐานมากกว่าหนึ่งครั้งต่อผลิตภัณฑ์ต่อวัน เมื่อต้องการแก้ปัญหาประวัติ (ค่าที่จะย้อนกลับไป 90 วัน) ฉันใช้ lagx () และใส่วันที่ 1-90 ในตัวแปรแล้วเพิ่มลงในอาร์เรย์ เนื่องจากตัวแปรต้องถูกรวมไว้ในอาร์เรย์ฉันจึงสร้างมาโครขนาดเล็กที่สร้างบรรทัดของรหัสที่ฉันต้องการ MACRO ที่สร้าง 270 ตัวแปรสำหรับ 90 วันของประวัติศาสตร์แมโคร SetVars ทำ i1 ถึง 90 ผลิตภัณฑ์โปรโมชั่น lagampi (ผลิตภัณฑ์) dateampi lagampi (วันที่) basisampi lagampi (พื้นฐาน) สิ้นสุดการซ่อม SORT ครั้งแรกโดยผลิตภัณฑ์และวันที่ proc จัดเรียงข้อมูล yourdata out datasorted ตามวันที่ข้อมูลการเรียกใช้ผลิตภัณฑ์ ชุดข้อมูลสุดท้ายที่จัดเก็บตามวันที่ของผลิตภัณฑ์ prod1-prod90 7 date1-date90 basis1-basis90 mysum 8 อาร์เรย์ปัจจุบันอาร์เรย์ mysum prod prod1-prod90 array dt date1-date90 อาร์เรย์ bs basis1-basis90 SetVars กำหนดวันที่ 90 วันเพื่อตรวจสอบ DateMinus90 date-90 bctr 1 mysum 0 วนรอบวันที่เป็นไปได้ทั้งหมดทำ i1 ถึง 90 ข้อยกเว้นสำหรับกรณีแรกในกลุ่มผลิตภัณฑ์ตามที่มีอยู่ไม่ช้าถ้า first. product แล้ว moveavg พื้นฐานตรวจสอบชื่อผลิตภัณฑ์เดียวกันและภายใน 90 วันอื่นถ้าตัด (upcase (แยง) )) ตัด (upcase (ผลิตภัณฑ์)) และ dt dateminus90 แล้วทำถ้าพบแล้วใส่ลงใน SUM VAR mysum sum (mysum, basis, bs) เก็บจำนวน CODE ของเอกสารจำนวนมากที่พบ bctr 1 end end ถ้าไม่พบค่าพื้นฐานปัจจุบัน ควรใช้ ถ้า mysum 0 แล้ว myavg พื้นฐานอื่น myavg mysumbctr รัน proc พิมพ์ dataFINAL var วันที่ผลิตภัณฑ์ dateminus90 พื้นฐาน myavg วันที่รูปแบบ dateminus90 mmddyy10 วิ่งฉันหวังว่านี้จะช่วยให้คุณ จริงๆคุณควรมองเรื่องนี้มากกว่าที่ฉันได้นี้จริงๆโดยไม่ต้องตรวจสอบอย่างกว้างขวาง อาจมีข้อ จำกัด หลายประการในโค้ดนี้ดังนั้นโปรดระวังโค้ดตัวอย่างบนแท็บรหัสเต็มแสดงวิธีคำนวณค่าเฉลี่ยเคลื่อนที่ของตัวแปรผ่านชุดข้อมูลทั้งหมดในช่วงการสังเกตการณ์ครั้งล่าสุดในชุดข้อมูลหรือในช่วง N ข้อสังเกตภายในกลุ่ม BY ไฟล์ตัวอย่างและตัวอย่างโค้ดเหล่านี้มีให้โดย SAS Institute Inc. และไม่มีการรับประกันใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันโดยนัยของความสามารถในเชิงพาณิชย์และความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ผู้รับยอมรับและยอมรับว่า SAS Institute จะไม่รับผิดชอบต่อความเสียหายใด ๆ ที่เกิดขึ้นจากการใช้วัสดุนี้ นอกจากนี้ SAS Institute จะให้การสนับสนุนสำหรับเอกสารที่มีอยู่ในเอกสารฉบับนี้ ไฟล์ตัวอย่างและตัวอย่างโค้ดเหล่านี้มีให้โดย SAS Institute Inc. และไม่มีการรับประกันใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เพียงการรับประกันโดยนัยของความสามารถในเชิงพาณิชย์และความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ผู้รับยอมรับและยอมรับว่า SAS Institute จะไม่รับผิดชอบต่อความเสียหายใด ๆ ที่เกิดขึ้นจากการใช้วัสดุนี้ นอกจากนี้ SAS Institute จะให้การสนับสนุนสำหรับเอกสารที่มีอยู่ในเอกสารฉบับนี้ คำนวณค่าเฉลี่ยเคลื่อนที่ของตัวแปรผ่านชุดข้อมูลทั้งหมดในช่วงการสังเกตการณ์ครั้งล่าสุดในชุดข้อมูลหรือการสังเกตการณ์ N ครั้งล่าสุดภายในกลุ่ม BY

No comments:

Post a Comment