Beste antwoord
Hallo,
Laat me proberen deze vraag te beantwoorden voor zover ik het begrijp . De stap DATA biedt u twee functies, LAG en DIF, voor toegang tot eerdere waarden van een variabele of uitdrukking. Deze functies zijn handig voor het berekenen van vertragingen en verschillen in reeksen.
Wanneer ze op een eenvoudige manier worden gebruikt, fungeren LAG en DIF als vertragings- en verschilfuncties. Het is echter belangrijk om in gedachten te houden dat, ondanks hun namen, de LAG- en DIF-functies die beschikbaar zijn in de DATA-stap geen echte lag- en verschilfuncties zijn.
In plaats daarvan zijn LAG en DIF wachtrijfuncties die onthouden en retourneer argumentwaarden van eerdere oproepen. De LAG-functie onthoudt de waarde die u eraan doorgeeft en retourneert als resultaat de waarde die u er bij de vorige aanroep aan hebt doorgegeven. De DIF-functie werkt op dezelfde manier, maar retourneert het verschil tussen het huidige argument en de onthouden waarde. (LAG en DIF retourneren een ontbrekende waarde de eerste keer dat de functie wordt aangeroepen.)
Een echte lag-functie retourneert niet de waarde van het argument voor de “vorige aanroep”, zoals de DATA-stap LAG en DIF-functies. In plaats daarvan retourneert een echte lag-functie de waarde van zijn argument voor de “vorige waarneming”, ongeacht de volgorde van eerdere aanroepen van de functie. Om een echte lag-functie mogelijk te maken, moet het dus duidelijk zijn wat de “vorige observatie” is.
Als de gegevens chronologisch worden gesorteerd, werken LAG en DIF als echte lag- en verschilfuncties. Gebruik in geval van twijfel PROC SORT om uw gegevens te sorteren voordat u de LAG- en DIF-functies gebruikt. Pas op voor ontbrekende waarnemingen, die ertoe kunnen leiden dat LAG en DIF waarden retourneren die niet de werkelijke waarden voor vertraging en verschil zijn
De DATA-stap is een krachtig hulpmiddel dat een willekeurig aantal waarnemingen uit een willekeurig aantal invoerbestanden kan lezen of datasets, kan een willekeurig aantal outputdatasets maken en kan een willekeurig aantal outputwaarnemingen naar elk van de outputdatasets schrijven, allemaal in hetzelfde programma. In het algemeen is het dus niet duidelijk wat “eerdere observatie” betekent in een DATA-stappenprogramma. In een DATA-stappenprogramma bestaat de “vorige observatie” alleen als u het programma op een eenvoudige manier schrijft die dit concept zinvol maakt.
Aangezien de vorige observatie in het algemeen niet duidelijk gedefinieerd is, is het zo het is niet mogelijk om echte lag- of verschilfuncties te maken voor de DATA-stap. In plaats daarvan biedt de stap DATA wachtrijfuncties die het gemakkelijk maken om vertragingen en verschillen te berekenen.
Ik hoop dat dit antwoord helpt