楼主: woshimtt
1415 4

[问答] 求助:列之间的计算 [推广有奖]

  • 0关注
  • 0粉丝

初中生

4%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
49 点
帖子
5
精华
0
在线时间
14 小时
注册时间
2013-8-25
最后登录
2019-6-19

1论坛币
求助大神们,我有一组数据,每个ID有几个不同的日期date,我会算相邻两个date的天数差值interval,但是不知道怎么算相邻两个interval之间的和sum, 还有怎么算每个ID最后一个date和第一个date的天值差值end。


obs  id  date             interval   sum       end

1     a1 04/07/2013  0           0
2     a1 04/04/2013  91         91
3     a1 22/02/2013  41         132        132
4     a2 23/02/2016  0           0
5     a2 28/07/2015  210       210
6     a2 06/07/2015  22         232         232
7     a3 20/07/2015  0           0            
8     a3 11/06/2015  39         39           
9     a3 30/03/2015  73         112
10   a3 26/01/2015  63         136
11   a3 05/12/2014  52         115         227

最佳答案

l1i2n3i4n5g 查看完整内容

data test(keep=id date interval); format date yymmdd10.; infile cards missover; input obs $ id $ date :ddmmyy10. interval sum end; cards; 1 a1 04/07/2013 0 0 2 a1 04/04/2013 91 91 3 a1 22/02/2013 41 132 132 4 a2 23/02/2016 0 0 5 a2 28/07/2015 210 210 6 a2 06/07/2015 22 232 232 7 a3 20/07/2015 0 0 8 a3 11/06/2015 39 39 9 a3 30/03/2015 ...
沙发
l1i2n3i4n5g 在职认证  发表于 2018-8-31 00:35:09 |只看作者 |坛友微信交流群
data test(keep=id date interval);
format date yymmdd10.;
infile cards missover;
  input
obs $ id $ date :ddmmyy10. interval sum end;
cards;
1   a1 04/07/2013  0   0
2   a1 04/04/2013  91   91
3   a1 22/02/2013  41   132   132
4   a2 23/02/2016  0   0
5   a2 28/07/2015  210   210
6   a2 06/07/2015  22   232   232
7   a3 20/07/2015  0   0
8   a3 11/06/2015  39   39
9   a3 30/03/2015  73   112
10   a3 26/01/2015  63   136
11   a3 05/12/2014  52   115   227
;
run;

data want;
   retain first_sum;
   set test;
   by id;
   lag_interval=lag(interval);
   if first.id then do;
      sum=interval;
      first_sum=sum;
   end;
   else sum=lag_interval+interval;
   if last.id then end=sum-first_sum;
   drop lag_interval first_sum;
run;
proc print;
run;

使用道具

藤椅
woshimtt 发表于 2018-8-31 21:52:47 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-8-31 00:35
data test(keep=id date interval);
format date yymmdd10.;
infile cards missover;
谢谢大神。再问一下,怎么生成一个变量,值为每个ID的第一DATE。

使用道具

板凳
woshimtt 发表于 2018-8-31 22:01:42 |只看作者 |坛友微信交流群
woshimtt 发表于 2018-8-31 21:52
谢谢大神。再问一下,怎么生成一个变量,值为每个ID的第一DATE。
我自己搞定了。谢谢

使用道具

报纸
woshimtt 发表于 2018-8-31 22:02:09 |只看作者 |坛友微信交流群
woshimtt 发表于 2018-8-31 21:52
谢谢大神。再问一下,怎么生成一个变量,值为每个ID的第一DATE。
我自己搞定了,哈哈哈哈。谢谢谢谢。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 04:18