0

这与我之前的一个问题(SAS - 创建具有滞后的不同独立变量的组合)有关。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 计划,但没有得到太多。是否有 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 ... ...<br> VarB VarC VarB VarC1 VarB VarC2 VarB1 VarC VarB1 VarC1 VarB1 VarC2 ... ...<br> VarA VarC VarA VarC1 VarA VarC2 ... ... < / p >












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 … … …</p>

4

1 回答 1

1

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

于 2013-06-26T14:15:07.840 回答