SAS中文论坛

标题: 数据格式问题 [打印本页]

作者: shiyiming    时间: 2004-6-29 04:08
标题: 数据格式问题
我的数据库里,时间的格式是06/30/2000,但是这是个字符型,请问
提取成显示为季度的信息,比如Jan2000或2000Q1?
还有,如果数据本身是datetime型的,我如何从中提取日期或年或季度信息呢?

本人在做summer paper,请各位帮忙解答,时间紧迫,在此谢谢各位。
作者: shiyiming    时间: 2004-6-29 09:04
标题: 试试这个
1、
[code:bd50d]data tem;
  set tem1;
  y=year(date);
  m=month(date);
  q=int(m/4)+1;
  d=yyq(y,q);
  format d yyq.
run;[/code:bd50d]
其中date为数据集tem1中的日期变量
2、
使用函数datepart(datetime)即从日期时间变量中提取日期。
作者: shiyiming    时间: 2004-6-30 06:34
标题: simple answer
data _null_;
dat=input('06/30/2000',mmddyy10.);
put dat yyq7.;
run;
作者: shiyiming    时间: 2004-7-2 01:37
标题: 谢谢大家
谢谢大家。很有用。
作者: shiyiming    时间: 2004-8-23 10:27
标题: 续问
若要在一个data中增加一个日期变量,要求是字符型的(不是要求用print过程后显示是'01/03/02'的形式,而是要求打开这个data就显示是是'01/03/02'的形式,而不是数值型),请问得如何做?
作者: shiyiming    时间: 2004-8-23 13:44
标题: re
首先用datepart函数,再转换ddmmyy8.,这样输出的就是字符型的了。

例如:
data tmp1;
format datetime datetime20.;
format datetime datetime20.;
input datetime;
cards;
10000000
20000000
30000000
;
run;

data tmp2;
set tmp1;
date=put(datepart(datetime),ddmmyy8.);
run;
作者: shiyiming    时间: 2004-8-25 09:43
标题: 一个相关的问题
日期的格式是"12/31/2000",可后来不知道怎么回事变成了"36891"。我尝试用YEAR函数,可是提出来的不是2000年。我看SAS的Manual,好像日期的格式应该是"31/12/2000"才可以用YEAR函数。不知道我这种情况该如何做,我要分别提出年月日。谢谢大家。
作者: shiyiming    时间: 2004-8-25 12:00
标题: re
sas存贮的日期值是和1960年1月1日的差值。
36891的year应该是2061年。用year函数时并没要求时间值的格式。

试试这个,你就明白了。
data tmp;
input date1;
format date1 mmddyy10.;
informat date1 mmddyy10.;
cards;
12/31/2000
;
run;

data tmp;
set tmp;
year1=year(date1);
month1=month(date1);
day1=day(date1);

date2=date1;
year2=year(date2);
month2=month(date2);
day2=day(date2);
run;




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2