楼主: tgsmall36
1234 7

横向累计输出时间点 [推广有奖]

  • 0关注
  • 0粉丝

初中生

0%

还不是VIP/贵宾

-

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

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一组数据,变量是hourm1-hourm12,观测值 是100个人,表示100个工人第一个月的工作时间到第十二个月的工作时间,然后我要求工作时间刚好超过600小时的那个月份,也就是每个工人刚好累计工作时间超过600小时的那个月份以此创建一个新变量,求怎么做。我试了累加retain 也试了do until ,都不行啊,求大神,期末考试截至明天晚上交,跪求帮忙啦!!
二维码

扫码加我 拉你入群

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

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

关键词:RETAIN until 工作时间 hour 期末考试

沙发
teqel 发表于 2015-12-11 06:23:07 |只看作者 |坛友微信交流群
贴你的程序

使用道具

藤椅
dogmamongo 发表于 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;

使用道具

板凳
tgsmall36 发表于 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了,我想了好久也不行

使用道具

报纸
tgsmall36 发表于 2015-12-11 16:22:42 |只看作者 |坛友微信交流群
dogmamongo 发表于 2015-12-11 11:03
%macro a;
data a;
   set a;
谢谢回复,不过这个用macro貌似不行

使用道具

地板
teqel 发表于 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)

使用道具

7
soporaeternus 发表于 2015-12-11 17:17:56 |只看作者 |坛友微信交流群
  1. data b;
  2.         set a;
  3.         s=0;
  4.         array _x[12] hourm1-hourm12;
  5.         do i=1 to 12;
  6.                 s+_x[i];
  7.                 if s>=600 then leave;
  8.         end;
  9. run;
复制代码

使用道具

8
dogmamongo 发表于 2015-12-11 18:38:06 来自手机 |只看作者 |坛友微信交流群
tgsmall36 发表于 2015-12-11 16:22
谢谢回复,不过这个用macro貌似不行
应该可以吧
你能截图你变量还有档名吗

使用道具

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

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

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

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