楼主: O(∩_∩)O~!
3396 15

[问答] 求计数方法程序 [推广有奖]

  • 0关注
  • 1粉丝

已卖:8份资源

讲师

18%

还不是VIP/贵宾

-

威望
0
论坛币
3994 个
通用积分
13.4290
学术水平
6 点
热心指数
16 点
信用等级
5 点
经验
8886 点
帖子
276
精华
0
在线时间
333 小时
注册时间
2010-8-5
最后登录
2022-8-16

楼主
O(∩_∩)O~! 发表于 2011-4-7 11:53:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有两列日期,现在想要统计出对于每一对日期,第一列日期中所有的时间在两列之间的个数,请问该如何写程序?
例如,假如第一列中只有一个日期在20070321和20070430之间则,计数变量的第一行的值为1。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何写 程序 计数

回帖推荐

sas_user 发表于5楼  查看完整内容

4# soporaeternus data dates; input date1 : yymmdd8. date2 : anydtdte10. ; format date1 date2 date9.; diff= date1-date2; if diff >0 then flag=1; datalines; 20070430 2007-03-31 20050303 2005-02-01 20050325 2005-02-23 ; run;

本帖被以下文库推荐

沙发
O(∩_∩)O~! 发表于 2011-4-7 15:22:00
请高手指点!多谢!

藤椅
luijb 在职认证  发表于 2011-4-7 17:39:03
直接减不就得了
西格玛临床统计服务工作室http://www.sigma-stat.com/,luijb@163.com

板凳
soporaeternus 发表于 2011-4-8 08:42:29
用sql自连做count,不是最高效的,但是代码挺简单的
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
O(∩_∩)O~! + 1 + 1 + 1 谢谢!我用这个方法做出来了

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Let them be hard, but never unjust

报纸
sas_user 发表于 2011-4-8 12:37:54
4# soporaeternus

data dates;
input date1 : yymmdd8. date2 : anydtdte10. ;
format date1 date2 date9.;
diff= date1-date2;
if diff >0 then flag=1;
datalines;
20070430 2007-03-31
20050303 2005-02-01
20050325 2005-02-23
;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
soporaeternus 发表于 2011-4-8 13:09:53
5# sas_user
date1=1900-01-01 date2=2999-12-31
flag=?
Let them be hard, but never unjust

7
275769263 发表于 2011-4-8 21:33:39
之前理解错了..再考虑考虑..

8
sas_user 发表于 2011-4-9 00:06:29
看的时候就有提点疑惑, 20070321 没有在日期中出现,怎么来的呢? 还有,“第一列日期中所有的时间在两列之间的个数”到底什么意思,楼主能不能解释一下具体要求?

9
275769263 发表于 2011-4-9 12:08:43
这个可以实现..应该没理解错你的意思了吧..程序还可以简化...还有,使用有个要求,第一列是唯一的,如果不唯一还得改一下程序。
data test1;
input d1 d2;
cards;
20050429 20050322
20070430 20070331
20070403 20050201
20050325 20050223
20050427 20050425
20050510 20050423
;
run;
data test2;
input d ;
cards;
20050429
20070430
20070403
20050325
20050427
20050510
;
run;
data _null_;
        length d1 8 count 8;
        if _n_=1 then do;
                declare hash h1(ordered:'n');
                h1.definekey('d1');
                h1.definedata('d1','d2','count','d');
                h1.definedone();
                call missing(count,d1,d2,d);
                count=0;
                declare hiter iter1('h1');
        end;
        if _n_=1 then do;
                declare hash h2(dataset:'test2');
                h2.definekey('d');
                h2.definedata('d');
                h2.definedone();
                call missing(d);
                declare hiter iter2('h2');
        end;
        do while(not last1);               
                set test1 end=last1;
                rc0=h1.ref();
        end;
        rc1=iter1.first();
        do while(rc1=0);
                count=0;
                h1.replace();
                rc2=iter2.first();
                do while(rc2=0);
                        if d2<d<d1 then do;
                                count+1;
                                h1.replace();
                        end;
                        rc2=iter2.next();
                end;
        rc1=iter1.next();
        end;
        h1.output(dataset:'result2');
run;

10
无花无酒 发表于 2011-4-11 16:33:27
这个有点难.....

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-31 01:19