楼主: tiantianwo
6275 11

请教关于sas做数据分组 [推广有奖]

11
happinessjay 发表于 2012-10-23 10:08:45
只要分好组,给组做个标记,很容易用sas提取组内的首尾记录

12
yuerqieqie 发表于 2012-10-23 22:16:18
因为没有你的数据,我先生成了一块模拟数据。
  1. data time;
  2.         format time time8.;
  3.         do i = 1 to 330;
  4.                 time = '9:30:00't + int(rand('uniform') * ('15:00:00't - '9:30:00't));
  5.                 output;
  6.         end;
  7.         drop i;
  8. run;
  9. proc sort data = time; by time; run;
复制代码
然后分组,
  1. %let intervalMin = 11;
  2. data group;
  3.         set time;
  4.         group = mod(intck('minute', '9:30:00't, time), &intervalMin) + 1;
  5. run;
  6. proc sort data = group; by group time; run;
复制代码
再求每组实际时间差
  1. data diff;
  2.         set group; by group time;
  3.         format start_time time8. end_time time8.;
  4.         retain start_time end_time;
  5.         if first.group then do; start_time = time; end_time = .; end;
  6.         if last.group then do;
  7.                 end_time = time;
  8.                 diff_sec = end_time - start_time;
  9.                 output;
  10.         end;
  11.         keep group start_time end_time diff_sec;
  12. run;
复制代码

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

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