Hælp til SAS

Svar på indlæg
Af David Ohnemus @ 14 feb. 2017 17:48

16734913_1309245099113872_979276084_o.jpg 

Hvordan udregner jeg følgende ud? 

Har anvendt en stribe funktioner, first, retain og lag, men intet med held.

Mvh,

David

Svar og citér
David Ohnemus

David Ohnemus

Antal indlæg: 2
Medlem siden: d. 14. februar
Af Philip Lemaitre @ 15 feb. 2017 13:34

Der er mange måde at gøre det på, men her en:

proc sort data=GrundTable;
  by Person;
run;

Data Resultat;
  retain Person loen SamletLoen;
  set GrundTable;
  by Person;

  SamletLoen =.;

  /* Nulstiller summen, når SAS læser den første observation for en given person. */
  if first.Person then do;
  sum=0;
  end;

  /* Aggregerer lønnen løbende. */
  Sum+Loen;

  /* Gemmer den Aggregerede løn, når SAS læser den sidste observation for en given person. */
  if last.Person then do;
  SamletLoen=Sum;
  end;

  drop Sum;
run;


Mvh.

Philip


Svar og citér
Philip Lemaitre

Philip Lemaitre

Antal indlæg: 1
Medlem siden: d. 29. december 2012
Af David Ohnemus @ 17 feb. 2017 10:07

Philip Lemaitre sagde:

Der er mange måde at gøre det på, men her en:

proc sort data=GrundTable;
  by Person;
run;

Data Resultat;
  retain Person loen SamletLoen;
  set GrundTable;
  by Person;

  SamletLoen =.;

  /* Nulstiller summen, når SAS læser den første observation for en given person. */
  if first.Person then do;
  sum=0;
  end;

  /* Aggregerer lønnen løbende. */
  Sum+Loen;

  /* Gemmer den Aggregerede løn, når SAS læser den sidste observation for en given person. */
  if last.Person then do;
  SamletLoen=Sum;
  end;

  drop Sum;
run;


Mvh.

Philip


Tak for det, det virkede, og tak for kommenteringen :) 

Svar og citér
David Ohnemus

David Ohnemus

Antal indlæg: 2
Medlem siden: d. 14. februar