【问题标题】:SAS Num to Date in Quarter format以季度格式表示的 SAS Num to Date
【发布时间】:2016-11-19 10:51:56
【问题描述】:

我的数据集有一个 NUM 格式的日期 201011,即 2010 年 11 月。我希望它以日期格式转换为 2010Q4。我申请了YYQ6。格式,但结果显示为 2510Q4。这里有什么问题?

data abc;
date=201011;
run;

data abc2;
set abc1;
format date YYQ.;
run;

【问题讨论】:

标签: date sas format


【解决方案1】:

您需要将日期写为日期文字,否则 SAS 会将其解释为自 1960 年 1 月 1 日以来的天数。

试试这个:

data abc;
date='01nov2010'd;
run;

data abc2;
set abc1;
format date YYQ.;
run;

如果您有一个格式为yyyymm 的现有数值变量,则需要先创建一个新变量,然后再应用该格式,例如

newdate = input(put(date,6.), yymmn6.);
format newdate yyq.;

【讨论】:

  • 我无法更改它,因为我得到的 SAS 数据集的日期格式为 201011 格式。我必须将其转换为季度格式。输入数据集 abc 只是一个说明。
  • 您的输入数据集有一个格式为 nnnnnn(6 位)的数字字段,恰好类似于日期,还是应用了官方 SAS 日期格式的数字格式?也许粘贴执行 proc contents data=[your data set here]; 的结果如果你不确定,请在上面?
  • Proc 内容说 NUM ,它是一个类似于日期的数字。
  • SAS 给出错误:当我使用 newdate = input(date, yymm6.); 时找不到或无法加载信息 YYMM;
  • 已修复 - 它需要 yymmn. 并首先转换为 char。
【解决方案2】:
data _null_;
    datenum=201011;
    dateval=mdy(mod(datenum,100),1,floor(datenum/100));
    put dateval mmddyy10.;
run;

不确定 FLOOR 功能是否必要——在这种情况下,没有它也可以正常工作。

问题是,这种算术操作和使用 MDY 是否比转换为字符然后返回日期更有效?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-15
    • 2011-08-18
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多