从SAS中的数据集中的多个列创建组合

时间:2013-06-26 09:53:31

标签: sas combinations

这与我先前的一个问题(SAS - Creating combinations of different independant variables with lags)有关。 HAVE矩阵如下所示。 SAS中是否有一种简单的方法可以根据多列中出现的变量创建组合? 例如。列标题Var1,Var2,Var3 - Var1 Var2 Var3

VarA VarB VarC

VarA1 VarB1 VarC1

...

VarA4 VarB4 VarC4

组合将是 - a)选择任意两列,例如Var1和Var2然后从每列中选择一个元素,例如一个组合可能是VarA1 VarB2 b)从每个列中选择所有列和一个元素。 我想在a)和b)中拥有所有这些可能的组合。我搜索了包括过程计划在内的这个,但是得不到多少。是否有proc为多列做所有这样的组合?

PS:VarA,VarA1,.. VarB,VarB1,..所有这些只是文本/字符串。

由于

要添加,我看到http://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/viewer.htm#n082a03omu3i21n1k889zfklh4ps.htm可以使用2列,但是对于多列来说会很麻烦。

! [编辑] WANT矩阵可能类似于下面(仅考虑两个滞后......)

VarA VarB
VarA VarB1
VarA VarB2
VarA1 VarB
VarA1 VarB1
VarA1 VarB2
...... ... VarB VarC
VarB VarC1
VarB VarC2
VarB1 VarC
VarB1 VarC1
VarB1 VarC2
...... ... VarA VarC
VarA VarC1
VarA VarC2
......

VarA VarB VarC
VarA VarB VarC1
VarA VarB VarC2
VarA VarB1 VarC
VarA VarB1 VarC1
VarA VarB1 VarC2
VarA VarB2 VarC
VarA VarB2 VarC1
VarA VarB2 VarC2 ...... ......

1 个答案:

答案 0 :(得分:1)

似乎最好的方法是将原始数据集转换为一列,然后使用笛卡尔连接(或您发布的论文中提到的任何其他方法)将其连接到自身。只要您想要所有其他所有或某些子集的组合,垂直转置就非常容易。然后只需使用WHERE删除不需要的组合;因此,例如,如果您只想要跨列组合,您的数据看起来像是可以使用SUBSTR查看第4个字符('A''B''C')并删除它们相等的任何位置。