Sas 提取新变量的月份和年份
我有一个带有变量的数据集,该变量具有订单日期Sas 提取新变量的月份和年份,sas,Sas,我有一个带有变量的数据集,该变量具有订单日期(MMDDYY10.)。我需要提取月份和年份,以便逐月查看订单——每年,因为有很多年。我模糊地意识到月和年功能,但如何将它们结合起来创建新的月bin 理想情况下,我会为每个月/年创建一个bin,这样我的输出可以如下所示: Date Item 2011OCT 2011NOV 2011DEC 2012JAN ... a 50 40 30 20 b 1
(MMDDYY10.)
。我需要提取月份和年份,以便逐月查看订单——每年,因为有很多年。我模糊地意识到月
和年
功能,但如何将它们结合起来创建新的月bin
理想情况下,我会为每个月/年创建一个bin,这样我的输出可以如下所示:
Date
Item 2011OCT 2011NOV 2011DEC 2012JAN ...
a 50 40 30 20
b 15 20 25 30
c 1 2 3 4
total
proc means data=yourdata;
class datevar;
format datevar MONYY7.;
var whatever;
run;
以下是我创建的示例代码:
data dsstabl;
set dsstabl;
order_month = month(AC_DATE_OF_IMAGE_ORDER);
order_year = year(AC_DATE_OF_IMAGE_ORDER);
order = compress(order_month||order_year);
run;
proc freq data
table item * _order;
run;
提前谢谢 进行分析时,请使用适当的格式<代码>星期一。听起来像是对的。这将正确排序并相应地对值进行分组。 比如:
Date
Item 2011OCT 2011NOV 2011DEC 2012JAN ...
a 50 40 30 20
b 15 20 25 30
c 1 2 3 4
total
proc means data=yourdata;
class datevar;
format datevar MONYY7.;
var whatever;
run;
所以你的桌子:
proc tabulate data=dsstabl;
class item datevar;
format datevar MONYY7.;
tables item,datevar*n;
run;
或者你可以用漂亮的技巧来做
data my_data_with_months;
set my_data;
MONTH = INTNX('month', NORMAL_DATE, 0, 'B');
run;
永远用它。乔,你今天只是照亮了我的世界。非常感谢你。我正要编辑我的问题,以包含一个新的反馈代码——上面的更新。但你的建议似乎是更有效的方法。将其更改为字符字段的问题(或好处,有时)在于,最终的排序顺序不同。如果您不介意排序顺序按字母顺序按月排列,而不是按日期顺序排列(尽管压缩文件中的变量名称错误),那么您在顶部的方法并非不合理。另外,
CATS
函数将在一个函数中执行压缩+连接。如果我想按“项”进行分层,我是否需要进行排序?取决于您在其中执行的分析。如果您在PROC-FREQ
中执行此操作,则必须使用BY
语句进行排序和使用,除非您只需要一个正常的交叉表就可以了(上面的内容就可以了)。如果您在PROC MEANS
或PROC tablate
或另一个class语句过程中执行此操作,则可以使用class
进行分层,而不进行排序。当然,如果这是您想要的,也可以制表-这取决于您对结果的追求制表
在显示主要计数和%s方面与FREQ
更为相似,而表示
进行其他汇总统计(尽管两者重叠很多)。