2017-08-04 58 views
0

我实际上是SAS的新手,并希望形式投资组合位于交易所的两个变量之间。使用SAS创建依赖于2个变量的投资组合

基本上,我有一个名为'上'的变量,像'月,公司,BM,市值上限,美元)的Excel文件 我想每个月排序我的数据:大小(降序),然后BM(降序)。我想根据P25,P50和P75创建4种规模的投资组合,第一个规模组合在P75(每个月)以上,等等。然后对于每个规模的投资组合,创建4个新的投资组合,用于'BM'以及P25,P50和P75的功能。

有人能帮助我,显示我的SAS代码,并把它添加到

+0

请提供的样本数据,所需的输出和向我们展示你已经尝试过。 ([链接](https://stackoverflow.com/help/mcve)) – user2877959

回答

0

所以我与评论表示赞同我现有的“向上”的文件(片的名字也叫“向上”)的方式,这不是问得好。然而,这是一个常见的问题,需要解决并且有点乐趣。所以在这里:

首先,我要补充一些数据。 Google搜索如何在SAS中读取Excel。这很容易。

1000家公司随机SIZEBM值。

data companies(drop=c); 
format company $12.; 
do c=1 to 1000; 
    company = catt("C_",put(c,z4.)); 
    size = ceil(100*ranuni(1)); 
    BM = ceil(100*ranuni(1)); 
    output; 
end; 
run; 

所以我假设你只是想在这4个组中等量。您不想根据分配或KDE来估计百分比。为此,PROC RANK运作良好。

proc rank data=companies out=companies descending groups=4; 
var size; 
ranks p_size; 
run; 

我们现在有一个变量P_SIZE它是基于的SIZE从大到小的顺序对值0,1,2,3

P_SIZE值对投资组合进行排序。

proc sort data=companies; 
by p_size; 
run; 

现在再次运行PROC RANK,使用BY语句P_SIZE,排名上BM,并创建P_SIZE_BM这个时候。

proc rank data=companies out=companies descending groups=4; 
var bm; 
by p_size; 
ranks p_size_bm; 
run; 

P_SIZE_BM现在包含的P_SIZE每个值值0,1,2,3

排序的数据,看看它是怎么弄出来:

proc sort data=companies; 
by p_size p_size_bm; 
run; 
相关问题