Wednesday 1 November 2017

Sas 12 Kuukauden Liukuva Keskiarvo


Olen SAS-aloittelija ja olen utelias, jos seuraava tehtävä voidaan tehdä paljon yksinkertaisemmaksi, koska se on tällä hetkellä päähäni. Minulla on seuraavat (yksinkertaistetut) metatiedot taulukossa nimeltä userdatemoney: Käyttäjä - Päivämäärä - Rahaa eri käyttäjillä ja päivämäärillä joka kalenteripäivä (viimeiset 4 vuotta). Tiedot on tilattu käyttäjän ASC: n ja Date ASC: n mukaan, näyte tiedot näyttävät tästä: Haluan nyt laskea rahan viiden päivän liukuva keskiarvo. Aloitin melko suosittujen apprach kanssa lag () - toiminnon, kuten tämä: Kuten huomaat, ongelma tällä menetelmällä tapahtuu, jos siellä, jos tietoväli kulkee uuteen käyttäjä. Aron saa joitakin viivästyneitä arvoja Anna, mikä ei tietenkään pitäisi tapahtua. Nyt kysymykseni: Olen melko varma, että voit käsitellä käyttäjän kytkintä lisäämällä ylimääräisiä kenttiä kuten laggeduser ja nollaamalla N, Sum ja Mean muuttujat, jos havaitset tällaisen kytkimen, mutta: Voiko tämä tehdä helpommin Ehkä käyttämällä BY lauseke millään tavalla Kiitos ideoistasi ja auttaakseni mielestäni helpoin tapa on käyttää PROC-laajennusta: Ja kuten Johns kommentoi, on tärkeää muistaa puuttuvia arvoja (sekä havaintojen alkua ja päättymistä). Olen lisännyt koodin SETMISS-vaihtoehdon, koska olet tehnyt selväksi, että haluat nollata puuttuvat arvot, älä unohda niitä (oletus MOVAVE-käyttäytyminen). Ja jos haluat sulkea pois neljä ensimmäistä havaintoa jokaiselle käyttäjälle (koska heillä ei ole tarpeeksi ennalta historiaa liukuvan keskiarvon laskemiseksi 5), voit käyttää vaihtoehtoa TRIMLEFT 4 TRANSFORMOUT (). vastasi 3. joulukuuta 13 klo 15:29 Kokonaiskoodi-välilehden näytekoodi kuvaa miten muuttujan liukuva keskiarvo lasketaan koko tietojoukon, viimeisten N-havaintojen perusteella datasarjassa tai viimeisten N-havaintojen perusteella - ryhmä. Näitä otosasiakirjoja ja koodin esimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko nimenomaisesti tai epäsuorasti, mukaan lukien, mutta ei rajoittuen, epäsuorat takuut kauppatavoitteesta ja sopivuudesta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän aineiston käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Näitä otosasiakirjoja ja koodin esimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko nimenomaisesti tai epäsuorasti, mukaan lukien, mutta ei rajoittuen, epäsuorat takuut kauppatavoitteesta ja sopivuudesta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän materiaalin käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Lasketaan muuttujan liikkuva keskiarvo koko datajoukon, viimeisten N-havaintojen perusteella datasarjassa tai viimeisten N-havaintojen sisällä BY-ryhmän. Tässä näytteessä esitetään kuinka laskea laskennallisia summia ja rolling keskiarvoja määrittelemällä array pidä arvot uusimman halutun ajanjakson lukumäärälle. Kun taulukko sisältää halutut arvot, summan laskeminen käyttäen SUM-funktiota ja keskiarvoa käyttämällä MEAN-funktiota on suoraviivainen. Yksinkertaisesti voidaan siirtää taulukko joko funktioon halutun tilaston hankkimiseksi: Tämä näyte korostaa logiikkaa, joka tarvitaan aina viimeisimpien jaksojen määrittämiseen ryhmässä ennen kuin lasketaan seuraava vierintätilastojen joukko. Käsite vanhimman arvon poistamisesta ja korvaamisesta viimeisimmällä arvolla kutsutaan yleisesti nimellä FIFO - First In, First Out. Kun taulukko on täytetty alkuhetkillä, lasketaan liikkuvan tilaston. Vastausmuuttujaa käytetään seuraamaan ja määrittämään elementti, joka sisältää vanhimman arvon sisältävän taulukon ja johon uusi viimeinen arvo on määritettävä. Uusi arvo ylittää - kirjoittaa vanhan arvon. Kun tehtävä on suoritettu, lasketaan uudet rollitilastot. Tämä prosessi jatkuu, kunnes viimeinen tilastollisesti vaikuttava arvo on luettu tietolähteestä. Huomaa: Muut laskutustilastot voitiin myös laskea. Kuten standardipoikkeama: Näitä näyte-tiedostoja ja koodiesimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko nimenomaisesti tai epäsuorasti, mukaan lukien, mutta ei rajoittuen, epäsuorat takuut myytävyydestä ja sopivuudesta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän materiaalin käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Alla olevassa ensimmäisessä DATA-vaiheessa näytteen myynti tiedot luodaan 36 kuukautta. Toisessa DATA-vaiheessa luodaan taulukko, jossa on sama määrä elementtejä kuin haluttu määrä jaksoja, joita käytetään laskentasumman ja keskiarvon laskemisessa. Kun taulukko on alun perin täytetty halutulla lukumääräluettelolla, seuraava jakso korvaa taulukon vanhin kausi. Tässä näytteessä haluttu määrä jaksoja on 12. Joten liikkuvan summan ja keskiarvon lasketaan ensimmäisten 12 jakson aikana, 13. jakso korvaa ensimmäisen jakson ja lasketaan uusi laskentasumma ja keskiarvo. Sitten 14-jakso korvaa toisen vaiheen, ja sitten lasketaan uusi laskentasumma ja keskiarvo jne. Näitä otosasiakirjoja ja koodiesimerkkejä toimittaa SAS Institute Inc. sellaisena kuin se on ilman minkäänlaista takuuta, joko ilmaista tai epäsuoraa, mukaan lukien mutta ei niihin rajoittuen, epäsuorat takuut, jotka ovat kauppatavoitteita ja sopivuutta tiettyyn tarkoitukseen. Vastaanottajat tunnustavat ja hyväksyvät, että SAS Institute ei ole vastuussa mahdollisista vahingoista, jotka johtuvat tämän aineiston käytöstä. Lisäksi SAS-instituutti ei tue mitään tässä esitettyjä materiaaleja. Joukko voidaan käyttää pitämään viimeinen N-lukuarvo niin, että laskentasumma ja keskiarvo voidaan laskea arvosta array. sas, 12 kuukautta rolling sum-apua sasnewb raquo Fri, 24 Sep 2004 01:13:17 GMT Minulla on tietokanta, joka on rakennettu seuraavasti: kuukausiarvo 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 enemmän kuukausia arvoa havainnoista. Haluan luoda muuttujan, joka on 12 kuukauden liukuva summa kuukausittain kuukaudessa mth12val 200106 194339 ja niin edelleen kuluvalle kuukaudelle, 200409 tässä kuussa, 200410 lokakuuhun jne. Voiko kukaan tarjota ratkaisu tähän. Chuck aka Sasnewb maksetaan. Vapaa sähköpostiosoitteesi osoitteessa zwalletindex. htmlusersasnewb sas gtgt Yhuang raquon 12 kuukauden liukuva summa auttaa, 24.9.2004 01:34:36 GMT Thu, 23 Sep 2004 17:13:17 0000, Chuck Windsor lt XXXXXXXXX gt kuukauden esim. Lokakuu jne. Tällaista pyörivää summausta tai liikkuvaa keskiarvoa voidaan helposti käsitellä SQL: n avulla. Olettaen, että sinulla ei ole puuttuvia kuukausia, ja tiedot on jo lajiteltu vuosiin ja kuukausiin, havainnointinumeroa voidaan käyttää tunnistamaan joka kuukausi: data xx syöttökuukausiarvo nn-kortit 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 proc sql valitse erillinen a., Summa (b. value), joka kääntyy xx a: sta. xx b jossa lt bn lt a. n12 ryhmä --------- kuukauden arvo n rolling ------------------------ -------------- 200106 13256 1 194339 200107 4888 2 182781 200108 67602 3 177893 200109 529 4 110291 200110 13743 5 109762 200111 53340 6 96019 200112 912 7 42679 200201 1003 8 41767 200202 7982 9 40764 200203 9620 10 32782 200204 2674 11 23162 200205 18790 12 20488 200206 1698 13 1698 Jos tiedoissa on puuttuva kuukausi, meidän on käytettävä joitain SAS-toimintoja ikkunan tunnistamiseksi, joka ei ole kovin kova. sas gtgt 12 kuukauden rullaava summa auttaa diskin raquo Fri, 24 Sep 2004 03:55:07 GMT Ya Huang jo antoi sinulle siistin SQL-ratkaisun. (Oletan, että se toimii). Jos sinulla on minulle, et ole liian villi SQL: Olettaen, että puuttuvia datapisteitä ei ole ja tiedot lajitellaan laskevaan päivämääräjärjestykseen, voit käyttää viive-funktiota joko lisätä kaikki 12 viivästykset kerralla tai säilyttää summa ja lisätä uusi arvo samalla vähennetään 13. viive. Entinen on yksinkertaisempi kirjoittaa, mutta pelkään, ei kovin tehokasta, mutta sinulla ei ole paljon tietoa. tiedot syöttövuosi 1-4 kuukausi 5-6 v kortit 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 run proc lajittele tiedot laskeva vuosi laskeva kuukausi ajaa tietoja b asettaa rullan summan (v, lag1 (v), lag2 (v), lag3 (v), lag4 (v), lag5 (v), lag6 (v), lag7 (v), lag8 (v), la g9 (v), lag10 (v), lag11 (v)) ajaa HTH, Dennis Diskin Lähettäjä: Chuck Windsor Lähetetty: 9232004 1:21:17 PM Lähettäjä: XXXXXXXXX Aihe: 12 kuukauden liukuva summa auttaa Minulla on tietokokonaisuus, kuukauden arvo 200106 13256 200107 4888 200108 67602 200109 529 200110 13743 200111 53340 200112 912 200201 1003 200202 7982 200203 9620 200204 2674 200205 18790 200206 1698 enemmän kuukausia arvo havaintoja. Haluan luoda muuttujan, joka on 12 kuukauden liukuva summa kuukausittain kuukaudessa mth12val 200106 194339 ja niin edelleen kuluvalle kuukaudelle, 200409 tässä kuussa, 200410 lokakuuhun jne. Voiko kukaan tarjota ratkaisu tähän. Chuck aka Sasnewb

No comments:

Post a Comment