Join Now

Hvordan laver jeg overlappende tidsperioder i VA?

by Occasional Contributor MetteHenriksen on ‎06-13-2016 03:29 AM (519 Views)

Jeg har nogle målinger, der foretages i 2-årige rul. Jeg vil gerne lave en visualisering i VA, hvor jeg viser udviklingen over tid, men på en måde, hvor det hele tiden er de seneste to år, dvs.:status i 2014-2015, 2015-2016, 2016-2017 osv.

 

Hvordan laver jeg en variabel i SAS VA 7.1, som kan vise dette?

 

Jeg har prøvet med en IF-THEN-ELSE, men jeg kan jo ikke bruge ELSE-delen, idet et år skal kunne indgå to steder.

Jeg har også prøvet at lave en ny kategori i VA, men her kan et år også kun indgå ét sted.

 

Håber der er nogen, der har en ide Smiley Surprised)

 

Mvh.

Mette

Comments
by Contributor ThomasPalm
on ‎06-15-2016 04:53 AM

Jeg kan se der ikke er nogle VA-folk der har svaret, så måske de arbejder på højtryk for at finde en løsning :-)

 

I mellemtiden kan du måske bruge denne ide, som typisk er noget jeg gør, inden jeg sender mine data videre til værktøjer der skal bruge data denormaliseret.

 

Lad os antage at dine data ser således ud:

 

Dato         Tal
2014-01-01   9
2015-01-01   10
2016-01-01   11
2017-01-01   12

Hvis det skal bruges på den måde du nævner, så vil du gerne have data til at se sådan her ud i stedet:

Dato         Tal  Status_i
2014-01-01   9    2013-2014
2014-01-01   9    2014-2015
2015-01-01   10   2014-2015
2015-01-01   10   2015-2016
2016-01-01   11   2015-2016
2016-01-01   11   2016-2017
2017-01-01   12   2016-2017
2017-01-01   12   2017-2018

Jeg håber det er tydeligt at se, hvordan hver record er blevet skrevet ud dobbelt med en matchende beskrivelse i de årstal der hører til. Det burde du nemt kunne lave et datastep.

Herefter burde det være en smal sag at arbejde videre med, alt efter hvordan din opbygning er...

 

by Occasional Contributor MetteHenriksen
on ‎06-16-2016 06:50 AM

Det er lige nøjagtig den operation, jeg skal lave.

Har du mulighed for at give et kort eksempel på, hvordan datasteppet skal opbygges?

Mvh. Mette

by Contributor ThomasPalm
on ‎06-16-2016 07:53 AM

Det burde kunne lade sig gøre forholdsvist simpelt..

 

Først nogle data til at teste med:

data rådata;
	input dato yymmdd10. tal;
	format dato yymmdd10.;
datalines4;
2014-01-01 9
2015-01-01 10
2016-01-01 11
2017-01-01 12
;;;;
run;

Vær opmærksom på, at jeg har "options VALIDMEMNAME= EXTEND", hvorfor mit brug af danske bogstaver måske kan drille hos dig.

 

Herefter den stump der laver de nye "dato-strenge":

data status_tabel;
	set rådata;
	length status_i $30;
	status_i = cat(year(dato)-1,'-',year(dato));
	output;
	status_i = cat(year(dato),'-',year(dato)+1);
	output;
run;

Tricket her er "output".

 

by Occasional Contributor MetteHenriksen
on ‎06-16-2016 09:54 AM

Fantastisk. Det var lige præcis Output-tricket, der løste det.

Tak for hjælpen.