【问题标题】:How to convert date value from day to Quarter in SAS如何在SAS中将日期值从一天转换为季度
【发布时间】:2014-10-08 13:20:03
【问题描述】:

我有一个这样的数据集:

date 
01JAN90
01APR90
01JUL90
01OCT90
01JAN91
01APR91
01JUL91
01OCT91

我想把日期值转换成

date
1990Q1
1990Q2
1990Q3
1990Q4
1991Q1
1991Q2
1991Q3
1991Q4

我如何在 SAS 中做到这一点?

【问题讨论】:

  • 我为您的日期时间问题添加了解决方案。请注意

标签: date sas datastep


【解决方案1】:

使用这样的东西:

format date yyq.;

其中“日期”是您的日期变量。

它会完成你的工作。

编辑: datetime7 之后。错误,如果您的日期是字符日期时间格式,请先使用 datepart 提取日期,然后将格式应用于日期。

sasdate = datepart(date);
fmtdate = put(sasdate,yyq.);

这里 fmtdate 是您的最终答案。

请参阅here 了解格式 yyq。

日期部分见here

希望这最终会有所帮助

【讨论】:

  • 我把这段代码放到数据步骤中,但是它不起作用。
  • 使用format而不是put,你用的是哪个版本的SAS?
  • 9.4,我使用了格式,但它显示的值是 9.78E8。
  • 似乎你的日期是字符,我的工作正常,我使用的是 SAS9.2,你必须先将日期更改为数字,使用第一个输入语句来执行此操作,然后应用格式。
【解决方案2】:

对于一个新的字符变量:

 quarter = put(date, yyq.);

要格式化您通常需要的相同变量:

format date yyq.;

编辑: 要将字符日期转换为 SAS 日期,请使用以下命令: sas_date=input(date, anydtdte.);

【讨论】:

  • 第一个显示无效的数字数据。第二个显示没有任何变化。
  • 那么你的“日期”很可能是一个字符变量,首先将其转换为有效的 SAS 日期。
  • 我有一个错误,当我使用 datetime7 时,为信息 DATETIME 指定的宽度无效。
  • 日期时间从何而来?这是一个与此问题无关的差异错误。
  • DATETIME7.我不知道会发生什么。
猜你喜欢
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
  • 2010-12-18
  • 2021-07-26
  • 2016-02-10
  • 2022-01-14
相关资源
最近更新 更多