SAS:使用程序创建时间 ID 变量(而不是使用点击系统)
SAS: create time ID variable with program (instead of using the point-and-click system)
SAS 提供了一个点击式系统,可以使用特定频率(例如周、季度、年)从特定开始日期创建时间 ID 变量。
由于我需要反复执行此过程,所以我喜欢使用代码,因为它可以使事情变得容易得多。我的数据涵盖 1985-2005 年并分为几个季度(给出 21 年 * 4 个季度 = 84 个观察值)。
日期变量列应如下所示(或提供任何其他可以格式化的 sas 日期):
日期:
1985/1
1985/2
1985/3
1985/4
1986/1
等等
有人知道如何为此编写代码吗?
非常感谢您!
Rens(研究音乐排行榜的社会学博士生)
您可以使用数据步骤和 YYQ 函数。
data quarters;
do year = 1985 to 2005;
do quarter = 1 to 4;
date = yyq(year,quarter);
output;
end;
end;
format date yyq.;
run;
proc print;
run;
使用 intnx 函数。
data have;
do i=0 by 1;
date=intnx('quarter',yyq(1985,1),i);
if date>yyq(2005,4) then return;
output;
end;
format date yyqs6.;
run;
SAS 提供了一个点击式系统,可以使用特定频率(例如周、季度、年)从特定开始日期创建时间 ID 变量。
由于我需要反复执行此过程,所以我喜欢使用代码,因为它可以使事情变得容易得多。我的数据涵盖 1985-2005 年并分为几个季度(给出 21 年 * 4 个季度 = 84 个观察值)。
日期变量列应如下所示(或提供任何其他可以格式化的 sas 日期): 日期:
1985/1
1985/2
1985/3
1985/4
1986/1
等等
有人知道如何为此编写代码吗?
非常感谢您!
Rens(研究音乐排行榜的社会学博士生)
您可以使用数据步骤和 YYQ 函数。
data quarters;
do year = 1985 to 2005;
do quarter = 1 to 4;
date = yyq(year,quarter);
output;
end;
end;
format date yyq.;
run;
proc print;
run;
使用 intnx 函数。
data have;
do i=0 by 1;
date=intnx('quarter',yyq(1985,1),i);
if date>yyq(2005,4) then return;
output;
end;
format date yyqs6.;
run;