在SAS中创建观察组合

时间:2016-06-02 12:38:37

标签: sas combinations

我需要弄清楚如何将数据集中所有可能的数据组合制成表格。我有一个数据集,每个人有2行,一行用于活动分数,一行用于测试的总分。每次访问都有分数变量。一个人可能有1至5次访问。我正在为每个分数寻找给定人的所有可能的分数组合。

例如,这里是生成样本数据结构的代码。

data example;
  input name $ type $ visit1-visit5;
    datalines;
    Bob activity 10 13 16 . .
    Bob total 13 19 17 . .
    John activity 11 20 25 20 21
    John total 13 15 17 19 22
    Steve activity 6 . . . .
    Steve total 9 . . . . .
    ;
run;

我想有一个数据集给我一个如下结构:

Bob activity 10 13
Bob activity 10 16
Bob activity 13 16
Bob total    13 19
Bob total    13 17
Bob total    19 17
John (rows for all possible combinations)
Steve - would have no rows, since he only has one visit (no combinations possible)

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

对于N选择2和输出结构,你想要几个嵌套的DO就足够了。

data example;
   input name $ type $ visit1-visit5;
   datalines;
Bob activity 10 13 16 . .
Bob total 13 19 17 . .
John activity 11 20 25 20 21
John total 13 15 17 19 22
Steve activity 6 . . . .
Steve total 9 . . . . .
;;;;
   run;
data by2;
   set example;
   array v[*] visit:;
   n=n(of v[*]);
   do i = 1 to n;
      col1 = v[i];
      do j = i + 1 to n;
         col2 = v[j];
         output;
         end;
      end;
   drop i j visit:;
   run;
proc print;
   run;