如何使用 PROC SQL 将数字列(如 200012)转换为 SAS 日期变量?
How do I convert a number column like 200012 to a SAS date variable using PROC SQL?
我有一个 SAS 数据集,其中包含一个文本字段 customer_id
和一个数字字段 month
,格式为 YYYYMM
。我正在创建这些数据的视图,我想将数据转换为标准的 SAS 日期(希望)在导出时保留。例如:
proc sql;
create view my_view as
select customer_id, month from raw_dataset;
quit;
proc export data = my_view
file = "out.dta"
dbms = stata replace;
quit;
查看 date documentation,看起来数字的形式(虽然不是数据类型)YYMMN.
,但我希望它采用 SAS 可以使用的格式日期,不仅仅是一个数字,例如proc expand
.
我已经看到很多使用 put
和 datepart
组合的问题,但由于我不希望变量作为字符串并且还没有日期时间变量,我不确定如何应用这些。
当我 运行 此 SQL 查询时,如何将此列转换为 SAS 日期数据类型?
YYMMN.
是正确的信息格式,而 input
正是您获取信息的方式,所以这是一个日期。试试吧!
data want;
x='201403';
y=input(x,YYMMN6.);
put _all_;
run;
当然,y
如果您想查看它,现在可能应该格式化得很好,但它不需要。
在 PROC SQL
中,其工作方式相同。
proc sql;
create view want_v as
select x, y, input(x,yymmn6.) as z format=date9.
from want;
quit;
这也添加了一种格式,因此它看起来可读,但它仍然是一个日期变量,下面与 y
相同。
我有一个 SAS 数据集,其中包含一个文本字段 customer_id
和一个数字字段 month
,格式为 YYYYMM
。我正在创建这些数据的视图,我想将数据转换为标准的 SAS 日期(希望)在导出时保留。例如:
proc sql;
create view my_view as
select customer_id, month from raw_dataset;
quit;
proc export data = my_view
file = "out.dta"
dbms = stata replace;
quit;
查看 date documentation,看起来数字的形式(虽然不是数据类型)YYMMN.
,但我希望它采用 SAS 可以使用的格式日期,不仅仅是一个数字,例如proc expand
.
我已经看到很多使用 put
和 datepart
组合的问题,但由于我不希望变量作为字符串并且还没有日期时间变量,我不确定如何应用这些。
当我 运行 此 SQL 查询时,如何将此列转换为 SAS 日期数据类型?
YYMMN.
是正确的信息格式,而 input
正是您获取信息的方式,所以这是一个日期。试试吧!
data want;
x='201403';
y=input(x,YYMMN6.);
put _all_;
run;
当然,y
如果您想查看它,现在可能应该格式化得很好,但它不需要。
在 PROC SQL
中,其工作方式相同。
proc sql;
create view want_v as
select x, y, input(x,yymmn6.) as z format=date9.
from want;
quit;
这也添加了一种格式,因此它看起来可读,但它仍然是一个日期变量,下面与 y
相同。