楼主: 等风来撒
3441 4

请问如何提取每一天最后一个值? [推广有奖]

  • 0关注
  • 0粉丝

博士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
490 个
通用积分
35.4021
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
2497 点
帖子
220
精华
0
在线时间
233 小时
注册时间
2014-1-5
最后登录
2025-7-23

楼主
等风来撒 发表于 2016-2-1 13:58:32 |AI写论文
10论坛币
我有以下数据集
date                 obs1           obs2   
20150101           3                5
20150101           4                6
20150101           6                4
20150101           5                2
20150102           4                3
20150102            3               5
20150102           5                2
20151013           3                5
20151014            5               3

我想把数集简化成只有一个日期的,然后obs1只取那一天最后一个观测值,obs2为当天所有的汇总,结果如下:
20150101       5     17        
20150102       5     10
20151013       3       5
20151014       5       3
请教高手如何解决??

关键词:如何提取 最后一个 date 请教高手 obs 如何
这个...........

沙发
Tigflanker 发表于 2016-2-1 13:58:33
  1. data have;
  2.   input date obs1 obs2 ;
  3.   cards;
  4. 20150101 3 5
  5. 20150101 4 6
  6. 20150101 6 4
  7. 20150101 5 2
  8. 20150102 4 3
  9. 20150102 3 5
  10. 20150102 5 2
  11. 20151013 3 5
  12. 20151014 5 3
  13. ;
  14. run;

  15. data want(drop = obs2);
  16.   set have;
  17.   by date;

  18.   if first.date then sum = 0;
  19.   sum + obs2;
  20.   if last.date;
  21. run;
复制代码

藤椅
等风来撒 发表于 2016-2-1 14:41:24
Tigflanker 发表于 2016-2-1 14:33
高手能解释下么..看不懂啊,好像行了

板凳
Tigflanker 发表于 2016-2-1 15:14:09
if first.date then sum = 0;
就是说在每个PDV读到每一个date的第一条时,将sum这个字段清0

sum + obs2;
然后每一条,将obs2的值累加给sum,注意自加函数在SAS中是自带retain功能的

if last.date;
我只需保留每date组中最后一条观测的值

报纸
tonic_zlj 发表于 2016-2-1 20:57:24
Tigflanker 发表于 2016-2-1 15:14
if first.date then sum = 0;
就是说在每个PDV读到每一个date的第一条时,将sum这个字段清0
code写的很简洁啊
已有 1 人评分论坛币 收起 理由
Tigflanker + 2 谢谢

总评分: 论坛币 + 2   查看全部评分

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

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