2009-12-19 8 views
0

J'ai un jeu de données de date (mensuel), de personne et de retour (mensuel). Je dois calculer le rendement mensuel composé de l'ensemble de données d'avril de l'année t à l'année de mars t + 1 pour chaque personne. Par exemple,Calcul de retour composé dans SAS

Rendement annuel Personne A = Avril Année 1 * mai Année 1 * ...... * Mars Année 2.

Puis-je savoir comment puis-je faire dans SAS? Ai-je besoin d'un tableau?

Répondre

0

Voulez-vous dire votre ensemble de données ressemble

Date, personne, Retour

"01Apr2009" d, A, 1.1

etc

etc

?

/* Then you can do */ 

data ur_input_data_view/view = ur_input_data_view; 

    /* assuming your dataset is stored in ur_input_data */ 

    set ur_input_data; 

    /* obtain the year and month from the date variable */ 

    year = year(date); 

    mth = year(date); 

run; 

/* you can skip the sort if your data is already sorted by person then date */ 

proc sort data = ur_input_data; 

    by person date; 

run; 

data output_data; 

    set ur_input_data_view ; 

    by person date; 

    /* reset annual return to null if looking at a new person or month is april */ 

    if first.person or mth = 4 then do; 

    annual_return = return; 

    end; 

    retain annual_return; 

    annual_return = annual_return * return; 

    /* this will output nothing for the persons that don't have a record at march */ 

    if mth = 3 then output; 

run;