全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1431 7
2015-12-11
我有一组数据,变量是hourm1-hourm12,观测值 是100个人,表示100个工人第一个月的工作时间到第十二个月的工作时间,然后我要求工作时间刚好超过600小时的那个月份,也就是每个工人刚好累计工作时间超过600小时的那个月份以此创建一个新变量,求怎么做。我试了累加retain 也试了do until ,都不行啊,求大神,期末考试截至明天晚上交,跪求帮忙啦!!
二维码

扫码加我 拉你入群

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

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

全部回复
2015-12-11 06:23:07
贴你的程序
二维码

扫码加我 拉你入群

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

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

2015-12-11 11:03:15
%macro a;
data a;
   set a;
     %do i=1 %to 12;
      m&i=sum(of hourm1-hourm&i)>=600;
     %end;
   new=12-sum(of m1-m12)+1;
   drop m1-m12;
run;
%mend;
%a;
二维码

扫码加我 拉你入群

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

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

2015-12-11 16:22:04
teqel 发表于 2015-12-11 06:23
贴你的程序
data want;
set have;
array mths(12) m1-m12;
total_time=0;
do i=1 to 12 while(sum<600);
total_time=sum(total_time, mths(i));
if total_time>600 then first_month=i;
end;
run;

我这么做的,但是因为如果某个人在6月份超过了600小时,那剩下的月份都会超过,然后所有的值都变成12了,我想了好久也不行
二维码

扫码加我 拉你入群

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

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

2015-12-11 16:22:42
dogmamongo 发表于 2015-12-11 11:03
%macro a;
data a;
   set a;
谢谢回复,不过这个用macro貌似不行
二维码

扫码加我 拉你入群

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

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

2015-12-11 16:58:26
tgsmall36 发表于 2015-12-11 16:22
data want;
set have;
array mths(12) m1-m12;
while(total_time<600)
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群