问题:如何将 YEAR 和 MONTH 数据合并为单个 mm/dd/yyyy 日期,而不从数字类型转换为字符类型?
我有需要读入 SAS 的日期数据。它分为两列:YEAR 和 MONTH。数据看起来与此类似:
YEAR MONTH
2012 1
2012 1
2013 10
2012 2
2014 7
数据必须以 mm/dd/yyyy 格式存储。例如,YEAR = 2013 和 MONTH = 10 对应于 10/01/2013。
我通过以下方式完成了此任务:
if month = 1 then
date = input(compress("01/01/"||year),mmddyy10.);
else if month = 2 then
date = input(compress("02/01/"||year),mmddyy10.);
...
但是,日志给出了以下注释:
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
据我了解,这样做是因为 SAS 将自 1960 年 1 月 1 日起的日期存储为数值。 压缩函数返回字符值。因此,数字数据被强制转换为字符类型。
虽然上面的代码充分解决了我的问题,但注释暗示不应以这种方式处理日期格式(通过类型转换)。
最佳答案
使用mdy()
函数:
date = mdy(month, 1, year)
关于date - SAS:将 YEAR 和 MONTH 数据合并为单个 mm/dd/yyyy 日期,而不更改类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38956397/