SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 504|回复: 2
打印 上一主题 下一主题

日期相关问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-3-30 09:27:02 | 只看该作者

日期相关问题

先提出问题,如下例子:
[code:1axe8t81]data year;
input y1-y6;
informat  y1-y6 yymmdd8.;
format          y1-y6 yymmdd10.;
datalines;
20100908        20100918        20101008        20101019        20101208      .
20100106        20100908        20101209                .               .      20100604
20100306        20100405        20100908        20100707                 .       .
20100505        20100610        20100915                .        20100710     .
;
run;
proc print;run;
*Q1:在同一个记录(同一行内)检出最大的日期,生成变量y_max(yymmdd);
*Q2:在同一个记录(同一行内)检出最后一次的日期记录,生成变量y_last(yymmdd);
*Q3:在同一个记录(同一行内),合计日期的次数(频数),生成变量y_freq;
*Q4:若有缺失值,则生成新变量y_mis(yymmdd),其值为排在其前面变量的取值;[/code:1axe8t81]
四个问题,期待回复,先谢谢了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-3-30 13:14:19 | 只看该作者

Re: 日期相关问题

[code:3azun55j]data year(drop=i);
    input (y1-y6) (:yymmdd8.);
    array arr_y{*} y1-y6;
    y_freq=n(of arr_y(*));
    y_max=max(of arr_y(*));
    do i=1 to dim(arr_y);
        y_last=ifn(missing(arr_y(i)),y_last,arr_y(i));
        y_mis=ifn(i gt 1 and missing(arr_y(i)),min(i,y_mis),y_mis);
    end;
    y_mis=arr_y(y_mis-1);
    format y1-y6 y_max y_last y_mis yymmdd10.;
datalines;
20100908   20100918   20101008   20101019   20101208      .
20100106   20100908   20101209      .               .      20100604
20100306   20100405   20100908   20100707            .       .
20100505   20100610   20100915      .        20100710     .
;[/code:3azun55j]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-3-31 06:58:14 | 只看该作者

Re: 日期相关问题

这是一个经典的array问题了,hopewell的回答也是经典了。只是有点糊涂:这个y_mis是唯一的吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-11 08:46 , Processed in 0.070171 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表