全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1976 7
2013-03-30

小弟的问题是,
想要算出不同公司(anco=12)的商品(key)损益。


首先
(1)

BS=BOS=0 是买进
然后 BS=S OS=1 是卖出。

(2)
或者是 BS=S OS=0 是买进,
然后 BS=B OS=1 是卖出。


PRICE是价格 QTY是数量。

公司1只有商品A
公司2有商品AB

在上面叙述的情况下(有两种),小弟想要算出

公司1A商品(key)损益,
公司2A商品和B商品的损益。

最后把结果output print出来。
结果呈现的方式希望如下:
ACNO  key  profit

1      a      ?

2      a      ?

2    b     ?

PS:小弟想法二,感谢yongyitian大大热心协助。
       剩下想法一,或许比较复杂,如果有大大愿意帮忙,小弟也很感谢。


附上EXCEL档案,里面是数据(sheet1)要汇入到SAS里面。

abc1.xls
大小:(26.5 KB)

 马上下载




二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-30 02:57:27
PS:小弟只是举例,实际资料笔数蛮大的,所以需要透过SAS处理。

或者是,有没有大大能够透过SAS,将EXCEL的sheet1数据,变成sheet2那样。
小弟想法是,假使商品买进数量(qty)是5,
我就把数据变成5笔一一列出对照,
同理,假使商品卖出数量(qty)是4,
我也把数据变成4笔一一列出对照,
最后,就变成sheet2那样。
OS=0分成一边(买),OS=1分成另外一边(卖)。
二维码

扫码加我 拉你入群

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

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

2013-3-30 08:00:11
是不是这样
proc sort data=abc;
   by acno;
run;
data abc1;
   set abc;
   by acno;
   os = os*1;
   if qty > 1 then do;
           do i = 1 to qty;
                  output;
               end;
        end;
        else output;
  drop i;
run;

data buy sale;
     set abc1;
         if os = 0 then output buy;
         if os = 1 then output sale;
run;
data buy_sale;
      merge buy sale (rename = (date = date1
                                acno = acno1
                                 key = key1
                                  bs = bs1
                                  os =  os1
                               price = price1
                                 qty = qty1)) ;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-30 10:46:24
yongyitian 发表于 2013-3-30 08:00
是不是这样
proc sort data=abc;
   by acno;
Y大,你的意思我看得懂,应该是根据我的第二种想法吧~
先谢谢你~小弟下午会try try 看。
然后 最后merge这行,小弟习惯以下这样写说,
跟Y大的差别是??  

merge buy sale;
rename date = date1
            acno = acno1
            key = key1
            bs = bs1
            os =  os1
            price = price1
            qty = qty1 ;
二维码

扫码加我 拉你入群

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

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

2013-3-30 11:21:57
楊中 发表于 2013-3-30 10:46
Y大,你的意思我看得懂,应该是根据我的第二种想法吧~
先谢谢你~小弟下午会try try 看。
然后 最后merg ...
阔号(。) 要紧跟在两个数据集中一个的后面。sale(。。。)的意思是要改变sale dataset 的变量名。

你的code

第一行的 ;说明这句已经结速。下面的rename是对merge以后的数据集进行的。

在rename前的merge时,因为两个数据集的变量名相同,所以第二个数据集会覆盖第一个数据集。
二维码

扫码加我 拉你入群

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

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

2013-3-30 11:44:28
yongyitian 发表于 2013-3-30 11:21
阔号(。) 要紧跟在两个数据集中一个的后面。sale(。。。)的意思是要改变sale dataset 的变量名。

...
谢谢Y大您~小弟刚试了一下,的确是我想要的结果,
从中我也学到了一些小技巧。
日后,如果小弟修改程序语法时,
有遇到问题,还希望Y大您不吝啬指教~^0^
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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