计算 SAS 中的复合回报

发布于 2024-08-15 14:54:29 字数 173 浏览 1 评论 0原文

我有一个日期(每月)、人员和回报(每月)的数据集。我需要计算每个人从 t 年 4 月到 t+1 年 3 月的数据集的复合月回报。 例如,

年度申报表人员 A= 第 1 年 4 月* 第 1 年 5 月*......*第 2 年 3 月。

我可以知道如何在 SAS 中执行此操作吗?我需要一个数组吗?

I have a dataset of date(monthly), person and return(monthly). I need to calculate the compounded monthly return of the dataset from April Year t to March Year t+1 for each person.
For example,

Annual return Person A= April Year 1* May Year 1*......*March Year 2.

Can I know how can I do that in SAS? Do I need an array?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深爱不及久伴 2024-08-22 14:54:29

意思是您的数据集看起来像

Date 、 Person 、 Return

"01Apr2009"d 、 A 、 1.1

您的

/* 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;

Do you mean your dataset looks like

Date , Person , Return

"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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文