楼主: crymic
7537 2

如何将一条记录拆分成多条记录 [推广有奖]

  • 1关注
  • 2粉丝

已卖:145份资源

博士生

15%

还不是VIP/贵宾

-

威望
0
论坛币
305 个
通用积分
2.1002
学术水平
21 点
热心指数
16 点
信用等级
21 点
经验
2438 点
帖子
99
精华
1
在线时间
231 小时
注册时间
2006-8-23
最后登录
2025-10-7

楼主
crymic 发表于 2013-6-23 23:55:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教各位sas高手,我有一个数据集A:
StartdateEnddateVar3Var4

1

1 January 2013

31 December 2013

10

100

2

1 July 2013

30 June 2014

20

200


想要根据Startdate和Enddate两个变量来进行拆分,若某条记录的这两个变量跨年,则拆分成两条记录,同时:Var3在两条记录中不变,而Var4则根据新的两条记录中的startdate和enddate起止长度进行分摊,即,得到数据集B:
StartdateEnddateVar3Var4

1

1 January 2013

31 December 2013

10

100

2

1 July 2013

31 December 2013

20

100

3

1 January 2014

30 June 2014

20

100


请指教!
二维码

扫码加我 拉你入群

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

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

关键词:多条记录 December January Start date 记录 如何

沙发
yongyitian 发表于 2013-6-24 05:20:51
  1. data test;
  2. input startdate date9. @11 enddate date9. var3 var4;
  3.       format startdate enddate date9.;
  4. datalines;
  5. 01jan2013 31dec2013 10 100
  6. 01jul2013 30jun2014 20 200
  7. ; run;

  8. data test2;
  9.     set test;
  10.        temp_v4 = var4;
  11.        temp_date = enddate;
  12.        yeardiff = intck('year', startdate, enddate);
  13.     if intck('year', startdate, enddate) ^> 0 then output;
  14.     if intck('year', startdate, enddate) > 0 then
  15.      do;  enddate = mdy(12, 31, year(startdate));
  16.              var4 = temp_v4/ (yeardiff+1);
  17.           output;
  18.      do;   startdate = mdy(1, 1, year(temp_date));
  19.              enddate = temp_date;
  20.              var4 = temp_v4/(yeardiff+1);
  21.           output;
  22.      end;
  23.      end;
  24.    drop yeardiff temp_v4 temp_date;
  25. run;
复制代码

藤椅
crymic 发表于 2013-8-12 23:43:18
yongyitian 发表于 2013-6-24 05:20
感谢感谢!!

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

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