LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (May 2008, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Tue, 20 May 2008 11:39:24 -0700
Reply-To:     "Nordlund, Dan (DSHS/RDA)" <NordlDJ@DSHS.WA.GOV>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Nordlund, Dan (DSHS/RDA)" <NordlDJ@DSHS.WA.GOV>
Subject:      Re: Variation between dates
In-Reply-To:  <941871A13165C2418EC144ACB212BDB04E15C9@dshsmxoly1504g.dshs.wa.lcl>
Content-Type: text/plain; charset=iso-8859-1

I probably should have mentioned that because of the conditional lagging, the value for diff is incorrect for every second record for a given CODTIT value. See for example obs=17 in the output below where the value for diff should be -.009, not 2.747

Dan

Daniel J. Nordlund Washington State Department of Social and Health Services Planning, Performance, and Accountability Research and Data Analysis Division Olympia, WA 98504-5204

> -----Original Message----- > From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On > Behalf Of Nordlund, Dan (DSHS/RDA) > Sent: Tuesday, May 20, 2008 10:59 AM > To: SAS-L@LISTSERV.UGA.EDU > Subject: Re: Variation between dates > > > -----Original Message----- > > From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On > > Behalf Of Nanita > > Sent: Tuesday, May 20, 2008 10:21 AM > > To: SAS-L@LISTSERV.UGA.EDU > > Subject: Re: Variation between dates > > > > On 20 Maio, 17:35, Nord...@DSHS.WA.GOV ("Nordlund, Dan (DSHS/RDA)") > > wrote: > > > > -----Original Message----- > > > > From: SAS(r) Discussion [mailto:SA...@LISTSERV.UGA.EDU] On > > > > Behalf Of Nanita > > > > Sent: Tuesday, May 20, 2008 7:38 AM > > > > To: SA...@LISTSERV.UGA.EDU > > > > Subject: Re: Variation between dates > > > > > > > On 20 Maio, 15:19, karma <dorjeta...@googlemail.com> wrote: > > > > > On 20 May, 14:57, Nanita <susana.urb...@gmail.com> wrote: > > > > > > > > > Hi there, > > > > > > > > > I need to calculate the variation in "VALOR" between > > dates (1 day > > > > > > diference). How can I do that? > > > > > > > > > Thanks. > > > > > > > > > CODFONTE CODTIT ULTDATA MOEDA BOLSA CODITEM > > > > VALOR DTALT > > > > > > 1 100019900833 20080417 EUR > > > > LUXEMBOURG Preco 15H30 96.224 17-04-2008 > > > > > > 1 100019900833 20080418 EUR > > > > LUXEMBOURG Preco 15H30 96.249 18-04-2008 > > > > > > 1 100019900833 20080421 EUR > > > > LUXEMBOURG Preco 15H30 95.764 21-04-2008 > > > > > > 1 100019900833 20080422 EUR > > > > LUXEMBOURG Preco 15H30 96.256 22-04-2008 > > > > > > 1 100019900833 20080423 EUR > > > > LUXEMBOURG Preco 15H30 96.367 23-04-2008 > > > > > > 1 100019900833 20080424 EUR > > > > LUXEMBOURG Preco 15H30 96.366 24-04-2008 > > > > > > 1 100019900833 20080425 EUR > > > > LUXEMBOURG Preco 15H30 95.562 25-04-2008 > > > > > > 1 100019900833 20080428 EUR > > > > LUXEMBOURG Preco 15H30 96.416 28-04-2008 > > > > > > 1 100019900833 20080429 EUR > > > > LUXEMBOURG Preco 15H30 96.843 29-04-2008 > > > > > > 1 100019900833 20080430 EUR > > > > LUXEMBOURG Preco 15H30 96.848 01-05-2008 > > > > > > 1 100019900833 20080502 EUR > > > > LUXEMBOURG Preco 15H30 96.851 02-05-2008 > > > > > > 1 100019900833 20080505 EUR > > > > LUXEMBOURG Preco 15H30 96.855 05-05-2008 > > > > > > 1 100019900833 20080506 EUR > > > > LUXEMBOURG Preco 15H30 96.857 06-05-2008 > > > > > > 1 100019900833 20080507 EUR > > > > LUXEMBOURG Preco 15H30 96.887 07-05-2008 > > > > > > 1 100019900833 20080508 EUR > > > > LUXEMBOURG Preco 15H30 96.869 08-05-2008 > > > > > > 1 100056520533 20080104 EUR > > > > EURONEXT-LISBON Preco 15H30 99.625 > > > > > > 04-01-2008 > > > > > > 1 100056520533 20080107 EUR > > > > EURONEXT-LISBON Preco 15H30 99.616 > > > > > > 08-01-2008 > > > > > > 1 100056520533 20080109 EUR > > > > EURONEXT-LISBON Preco 15H30 99.633 > > > > > > 09-01-2008 > > > > > > 1 100056520533 20080110 EUR > > > > EURONEXT-LISBON Preco 15H30 99.64 > > > > > > 11-01-2008 > > > > > > 1 100056520533 20080111 EUR > > > > EURONEXT-LISBON Preco 15H30 99.634 > > > > > > 14-01-2008 > > > > > > 1 100056520533 20080115 EUR > > > > EURONEXT-LISBON Preco 15H30 99.676 > > > > > > 15-01-2008 > > > > > > 1 100056520533 20080116 EUR > > > > EURONEXT-LISBON Preco 15H30 99.661 > > > > > > 16-01-2008 > > > > > > 1 100056520533 20080117 EUR > > > > EURONEXT-LISBON Preco 15H30 99.671 > > > > > > 17-01-2008 > > > > > > 1 100056520533 20080118 EUR > > > > EURONEXT-LISBON Preco 15H30 99.702 > > > > > > 18-01-2008 > > > > > > 1 100056520533 20080121 EUR > > > > EURONEXT-LISBON Preco 15H30 99.708 > > > > > > 21-01-2008 > > > > > > 1 100056520533 20080122 EUR > > > > EURONEXT-LISBON Preco 15H30 99.719 > > > > > > 22-01-2008 > > > > > > 1 100056520533 20080123 EUR > > > > EURONEXT-LISBON Preco 15H30 99.701 > > > > > > 24-01-2008 > > > > > > 1 100056520533 20080125 EUR > > > > EURONEXT-LISBON Preco 15H30 99.691 > > > > > > 25-01-2008 > > > > > > > > you could use the lag function: > > > > > > > > data testt; > > > > > set values; > > > > > diff=valor-lag(valor); > > > > > run; > > > > > > > Thanks for your answer karma. It would help I I had just > > one COD_TIT > > > > and the the the dates were sorted. But it isn't the case. Thanks > > > > anyway. :) > > > > > > As has been mentioned before on this list, a "picture" is > > worth a 1000 words. If you presented a small number of > > records that illustrated cases of interest, and then > > presented what the output should look like after processing, > > you might get more useful advice. I know that it is not > > clear to me what you want as output. > > > > > > Sorry I can't be of more help at this time, > > > > > > Dan > > > > > > Daniel J. Nordlund > > > Washington State Department of Social and Health Services > > > Planning, Performance, and Accountability > > > Research and Data Analysis Division > > > Olympia, WA 98504-5204 > > > > I've tried this code: > > > > proc sort data=mylib.TAcc_Obri; > > by codfonte codtit dtalt; > > run; > > > > > > data mylib.TAcc_Obriga; > > set mylib.TAcc_Obri; > > by codfonte codtit dtalt; > > > > if first.codtit then diff=0; > > if not first.codtit then diff = valor - lag(valor); > > run; > > > > It seems to be working but I don't understand why in line 2 > the value > > of diff is '.'. > > > > Where did I fail? > > > > > > Obs CODTIT VALOR DTALT ISIN > > diff > > > > 1 100019900833 96.224 17APR2008 > > XS0195487912 0.000 > > 2 100019900833 96.249 18APR2008 > > XS0195487912 . > > 3 100019900833 95.764 21APR2008 > > XS0195487912 -0.485 > > 4 100019900833 96.256 22APR2008 > > XS0195487912 0.492 > > 5 100019900833 96.367 23APR2008 > > XS0195487912 0.111 > > 6 100019900833 96.366 24APR2008 > > XS0195487912 -0.001 > > 7 100019900833 95.562 25APR2008 > > XS0195487912 -0.804 > > 8 100019900833 96.416 28APR2008 > > XS0195487912 0.854 > > 9 100019900833 96.843 29APR2008 > > XS0195487912 0.427 > > 10 100019900833 96.848 01MAY2008 > > XS0195487912 0.005 > > 11 100019900833 96.851 02MAY2008 > > XS0195487912 0.003 > > 12 100019900833 96.855 05MAY2008 > > XS0195487912 0.004 > > 13 100019900833 96.857 06MAY2008 > > XS0195487912 0.002 > > 14 100019900833 96.887 07MAY2008 > > XS0195487912 0.030 > > 15 100019900833 96.869 08MAY2008 > > XS0195487912 -0.018 > > 16 100056520533 99.625 04JAN2008 > > PTSEMCOE0006 0.000 > > 17 100056520533 99.616 08JAN2008 > > PTSEMCOE0006 2.747 > > 18 100056520533 99.633 09JAN2008 > > PTSEMCOE0006 0.017 > > 19 100056520533 99.64 11JAN2008 > > PTSEMCOE0006 0.007 > > 20 100056520533 99.634 14JAN2008 > > PTSEMCOE0006 -0.006 > > 21 100056520533 99.676 15JAN2008 > > PTSEMCOE0006 0.042 > > 22 100056520533 99.661 16JAN2008 > > PTSEMCOE0006 -0.015 > > 23 100056520533 99.671 17JAN2008 > > PTSEMCOE0006 0.010 > > 24 100056520533 99.702 18JAN2008 > > PTSEMCOE0006 0.031 > > 25 100056520533 99.708 21JAN2008 > > PTSEMCOE0006 0.006 > > 26 100056520533 99.719 22JAN2008 > > PTSEMCOE0006 0.011 > > 27 100056520533 99.701 24JAN2008 > > PTSEMCOE0006 -0.018 > > 28 100056520533 99.691 25JAN2008 > > PTSEMCOE0006 -0.010 > > 29 100056520533 99.692 28JAN2008 > > PTSEMCOE0006 0.001 > > 30 100056520533 99.692 29JAN2008 > > PTSEMCOE0006 0.000 > > 31 100056520533 99.686 30JAN2008 > > PTSEMCOE0006 -0.006 > > 32 100056520533 99.686 06FEB2008 > > PTSEMCOE0006 0.000 > > 33 100056520533 99.689 07FEB2008 > > PTSEMCOE0006 0.003 > > 34 100056520533 99.691 08FEB2008 > > PTSEMCOE0006 0.002 > > 35 100056520533 99.688 11FEB2008 > > PTSEMCOE0006 -0.003 > > > > > > The reason you are getting a missing value is that you are > executing the LAG() conditionally. There have been quite a > few discussions on the list about why that causes problems. > You could search the SAS-L archives > (http://listserv.uga.edu/archives/sas-l.html) for LAG and > find those discussions. For your program, try this: > > data mylib.TAcc_Obriga; > set mylib.TAcc_Obri; > by codfonte codtit dtalt; > > diff = valor - lag(valor); > if first.codtit then diff=0; > run; > > Hope this is helpful, > > Dan > > Daniel J. Nordlund > Washington State Department of Social and Health Services > Planning, Performance, and Accountability > Research and Data Analysis Division > Olympia, WA 98504-5204 > >


Back to: Top of message | Previous page | Main SAS-L page