加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SAS编程习题(29)

(2014-07-10 22:40:48)
标签:

sas

日期型变量

vtype

分类: SAS笔记

在做日期型的数据的处理过程中,可能会碰到这种情况:数据中日期型变量比较多,不可能一一写出来,同时日期变量名不连续,比方说date1-date400或者a-k这种情况也不出现的情况下,如何统一处理这类日期型变量呢?

假如要对所有日期变量做修改,使日期变量改到只保留年份。

data a;
input date1 date3 date4 id $ dt;
informat date1 date3 date4 ddmmyy8.;
format date1 date3 date4 ddmmyy8.;
cards;
01/02/03 03/08/10 23/09/11 A 3
;
run;

在上述数据中,date1、date3、date4是不连续的日期型变量,同时数据中存在另外一个数值型变量dt和一个字符型变量id。
data b;
set a;
array array{*} _numeric_;
array k{1000} _temporary_;
do i=1 to dim(array);
if array(i)>100 then do;
k(i)=year(array(i));
array(i)=k(i);
end;
end;
format _numeric_ 8.;
drop i;
run;

通过上述处理方式可以得到想要的数据,但是很多情况下,数据非常复杂,不可能出现上述”if array(i)>100 then do“这种简单格外分明的数据,在这种情况下条件语句就得自己酌情考虑了。

所以说难点在于对日期型变量的判断,由于SAS中似乎并没有对日期型变量的判断函数,只有对数值型和字符型变量的判断函数vtype(),vtype()函数返回‘N’或者‘C’来表示numeric或者character,举个例子:

data _null_;
a=1;
b='c';
a1=vtype(a);
b1=vtype(b);
put a1= b1=;
run;

结果为:

a1=N b1=C

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有