全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2091 10
2015-10-06
悬赏 15 个论坛币 已解决
这个是原始数据, 原始数据 这个是最终的结果, 最终结果.JPG


大概意思:对name按照year进行cost的累加。输出两张表。输出表一中有3个变量,name,year,sum;期中sum的结果应该是5,4,5,13,8,19,。。。。输出表二中有4个变量,name,year,cost,sum四个变量,sum结果应该为,2,5,4,5,6,13,8,9,19.。。
要求:只需编写程序。优先使用sql语句的sas,也可以写不使用SQL的sas。两者都写出的,则为最佳结果。若无,则以SQL为判定准则。


二维码

扫码加我 拉你入群

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

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

全部回复
2015-10-6 17:21:40
复制代码
二维码

扫码加我 拉你入群

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

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

2015-10-6 23:05:10
复制代码


这是用sql实现的 但这里为了生成表2感觉有点把问题复杂化 加入了个count这个变量
二维码

扫码加我 拉你入群

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

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

2015-10-7 11:05:57
sas那个石家庄人 发表于 2015-10-6 22:33
我问一下,26到29行是什么意思
二维码

扫码加我 拉你入群

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

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

2015-10-7 12:34:54
落泪的剑 发表于 2015-10-7 11:05
我问一下,26到29行是什么意思
比如一个i 有很多个年份  遇到一个新的年份时 就将sum复位到0

比如 i  1991    1
       i  1991    2
       i  1992    3
       i  1992    4

第一次遇到1991年 sum复位到0;
sum+cost是一个sum函数也就是sum=sum+cost=0+1=1
因为你的第一个表要求算出每个name下出每一年cost的总sum之后再导出
因此 if last.year then output; 就是让1991年的所有cost一直加
直到最后一次出现1991的时候 再把sum导出来
二维码

扫码加我 拉你入群

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

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

2015-10-7 12:40:39
sas那个石家庄人 发表于 2015-10-7 12:34
比如一个i 有很多个年份  遇到一个新的年份时 就将sum复位到0

比如 i  1991    1
那drop cost是什么意思?感觉这个句子有点累赘。是不是意味着停止自加的过程?
还有一个问题是表二的,根据你的程序好像表二输出只有10个观测值
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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