楼主: xiaoxiahu0571
9023 3

[原创博文] intck 函数 [推广有奖]

  • 0关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
3 点
热心指数
3 点
信用等级
1 点
经验
792 点
帖子
53
精华
0
在线时间
162 小时
注册时间
2009-10-19
最后登录
2017-1-24

楼主
xiaoxiahu0571 发表于 2010-10-12 11:49:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data _null_;
mob=intck('day365','18dec2009'd,'10oct2010'd);
mob1=intck('day365','19dec2009'd,'10oct2010'd);
mob2=put(intnx('day','10oct2010'd,-365),date9.);
put mob mob1 mob2;
run;


百思不得其解,本来我是想用算类似于注册时长这类的数据,intck(‘year’)算出来,只是将年份与年份相减,不准确,所以用day来算,但是结果是这样
1 0 10OCT2009
不理解啊?明明是365天,它怎么只算了305天呢?求解,谢谢
二维码

扫码加我 拉你入群

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

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

关键词:intck int 百思不得其解 date null null

回帖推荐

pobel 发表于2楼  查看完整内容

SAS Help: For all multiunit intervals except multiweek intervals, the SAS System creates an interval beginning on January 1, 1960, and counts forward from that date to determine where individual intervals begin on the calendar. As a practical matter, when a year can be divided evenly by an interval, think of the intervals as beginning with the current year. 下面的代码可以输出每个 'day365' 区间 ...
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xiaosanmao + 1 + 1 + 1 lihai

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

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2010-10-12 12:48:35
SAS Help:
For all multiunit intervals except multiweek intervals, the SAS System creates an interval beginning on January 1, 1960, and counts forward from that date to determine where individual intervals begin on the calendar. As a practical matter, when a year can be divided evenly by an interval, think of the intervals as beginning with the current year.

下面的代码可以输出每个 'day365' 区间的第一天。

data test;
     from='01jan1960'd;
     format beginner yymmdd10. ;
     do i=0 to 51;
         beginner=intnx('day365',from,i);
         put beginner= ;
        output;
     end;
run;


part of log:
beginner=2007-12-20
beginner=2008-12-19
beginner=2009-12-19
beginner=2010-12-19


mob=intck('day365','18dec2009'd,'10oct2010'd);
mob1=intck('day365','19dec2009'd,'10oct2010'd);

'18dec2009'd 和 '10oct2010'd 之间包含了一个beginner "2009-12-19",所以mob值是1,
'19dec2009'd 和 '10oct2010'd 之间不包含beginner,所以mob1的值是0。

希望对你有点帮助。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 精彩帖子

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

和谐拯救危机

藤椅
xiaoxiahu0571 发表于 2010-10-12 12:58:46
明白了,谢谢啊,好厉害
最后我这样解决写了
mob=round(('10oct2010'd-datepart(starts))/365);
还有什么其他方法么?或者函数来解决的?

板凳
soporaeternus 发表于 2010-10-12 13:02:26
yrdif
详见帮助,可能会好一点
Let them be hard, but never unjust

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 15:36