Jeg er en SAS nybegynner og jeg er nysgjerrig på om følgende oppgave kan gjøres mye enklere som det er i mitt hode. Jeg har følgende (forenklede) metadata i en tabell som heter userdatemoney: Bruker - Dato - Penger med ulike brukere og datoer for hver kalenderdag (for de siste 4 årene). Dataene er bestilt av User ASC og Date ASC, eksempler data ser slik ut: Jeg vil nå beregne et fem dagers glidende gjennomsnitt for pengene. Jeg startet med den ganske populære apprachen med lag () - funksjonen som denne: Som du ser, oppstår problemet med denne metoden hvis det er datatrinnet som går inn i en ny bruker. Aron ville få noen forsinkede verdier fra Anna, som selvfølgelig ikke skulle skje. Nå spørsmålet mitt: Jeg er ganske sikker på at du kan håndtere brukerbryteren ved å legge til noen ekstra felt som laggeduser og ved å tilbakestille N, Sum og Mean variables hvis du merker en slik bryter, men: Kan dette gjøres på en enklere måte Kanskje du bruker AV Klausul på noen måte Takk for dine ideer og hjelp Jeg tror at den enkleste måten er å bruke PROC EXPAND: Og som nevnt i Johns kommentar, er det viktig å huske om manglende verdier (og om å begynne og avslutte observasjoner også). Ive la til SETMISS-alternativet til koden, da du gjorde det klart at du vil nullstille verdier, ikke ignorere dem (standard MOVAVE-oppførsel). Og hvis du vil utelukke første 4 observasjoner for hver bruker (siden de ikke har nok forhistorie til å beregne glidende gjennomsnitt 5), kan du bruke alternativet TRIMLEFT 4 i TRANSFORMOUT (). besvart 3. desember kl. 15:29 Eksempelkoden på fanen Fullkode illustrerer hvordan man beregner det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N observasjonene i et datasett eller over de siste N observasjonene i en BY - gruppe. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Disse prøvefiler og kodeeksempler er levert av SAS Institute Inc., som er uten garanti av noe slag, enten uttrykk eller underforstått, inkludert, men ikke begrenset til, de underforståtte garantiene for salgbarhet og egnethet for et bestemt formål. Mottakerne erkjenner og aksepterer at SAS Institute ikke skal holdes ansvarlig for eventuelle skader som måtte oppstå ved bruk av dette materialet. I tillegg vil SAS Institute ikke gi støtte til materialene som er inkludert heri. Beregn det bevegelige gjennomsnittet av en variabel gjennom et helt datasett, over de siste N observasjonene i et datasett, eller over de siste N observasjonene i en BY-gruppe. Innledning i Release 6.08 av SAS-systemet, kan PROC EXPAND i SASETS-programvare brukes til å lage en rekke data transformasjoner. Disse transformasjonene inkluderer: fører, lags, vektet og uvevet glidende gjennomsnitt, flytende summer og kumulative summer, for å nevne noen få. Mange nye transformasjoner ble lagt i versjon 6.12, inkludert separate spesifikasjoner for sentrert og bakovergående gjennomsnitt. Disse nye transformasjonene gjorde det nødvendig å endre syntaksen for noen av transformasjonene som ble støttet før utgivelsen 6.12. Eksempler på hvordan du angir syntaksen for sentrert og bakovergående gjennomsnitt, ved hjelp av versjon 6.11 og tidligere og versjon 6.12 og senere, er gitt nedenfor. PROC EXPAND kan beregne enten et sentrert glidende gjennomsnitt eller et bakovergående glidende gjennomsnitt. Et 5-års sentrert glidende gjennomsnitt beregnes ved å averdere totalt 5 påfølgende verdier i serien (den nåværende periodevarianten i tillegg til de to umiddelbart foregående verdiene og to verdier umiddelbart etter gjeldende verdi). Et 5-årig bakovergående glidende gjennomsnitt beregnes ved å gjennomsnittlig gjeldende periodeverdi med verdiene fra de 4 umiddelbart foregående perioder. Følgende syntaks illustrerer hvordan du bruker TRANSFORM (MOVAVE n) - spesifikasjonen til å beregne et 5-års sentrert glidende gjennomsnitt ved hjelp av Release 6.11 eller tidligere: Bruk TRANSFORM (MOVAVE) for å beregne et n-tilbakegående glidende gjennomsnitt ved hjelp av Release 6.11 eller tidligere. n LAG k) spesifikasjon, hvor k (n-1) 2 hvis n er merkelig eller hvor k (n-2) 2 hvis n er jevn. For eksempel illustrerer følgende syntaks hvordan du beregner et 5-årig bakovergående glidende gjennomsnitt ved hjelp av Slett 6.11 eller tidligere: Følgende syntaks illustrerer hvordan du bruker TRANSFORM (CMOVAVE n) - spesifikasjonen til å beregne et 5-års sentrert glidende gjennomsnitt ved hjelp av Slett 6.12 eller senere: Følgende lignende syntaks illustrerer hvordan du bruker TRANSFORM (MOVAVE n) - spesifikasjonen til å beregne et 5-årig bakovergående glidende gjennomsnitt ved hjelp av versjon 6.12 eller nyere: For mer informasjon, se Transformasjonsoperasjoner i EXPAND-kapitlet i SASETS brukerhåndbok. Hvis du ikke har tilgang til SASETS, kan du beregne et bevegelige gjennomsnitt i DATA-trinnet som illustrert i dette prøveprogrammet. Operativsystem og Utgivelsesinformasjon
No comments:
Post a Comment