我难住了。
我想将一个非常大的数据集减少为更少的观察,但包含原始数据集的所有级别(最多)一次。这样做是出于测试目的,因此提出具有最少 obs 数量的最终数据集符合我们的最大利益。
因此,如果我们以数据集 SASHELP.CLASS 为例。我想找出覆盖原始数据集每个单独级别的第一个 obs(或任何非特定的 obs,但我觉得第一个/最后一个 obs 可能更容易),不是所有可能的(现有的,或理论)所需变量的组合。
输出看起来像这样:(SASHELP.CLASS:所有级别按年龄,性别):
- AGE 有 6 个不同的级别 (11-16)
- SEX 有 2 个不同的级别(“F”、“M”)
- 理论上覆盖这些级别的最少 obs 数量是 6。
所以我们应该最终得到:
- OBS #1:Affred,“M”,14
- OBS #2:爱丽丝,“F”,13
芭芭拉、卡罗尔和亨利不会被输出,因为 FM 和 13-14 都被覆盖了
- OBS #3:詹姆斯,“M”,12
- OBS #4:珍妮特,“F”,15
- OBS #5:乔伊斯,“F”,11
- OBS #6:菲利普,“M”,16
输出结束
在这种情况下,我们按顺序检查数据,我们发现满足要求的 obs (6) 的最小数量,但是如果级别变得更长(或相互关联),并且数据分类(假设我们可以预先排序) ,我们最终可能会得到接近最小值的东西,但不是所需变量中最长水平的最小值。
我想这将需要某种递归算法来最有效地获得少量 obs 来覆盖这些值,但不知道从哪里开始。任何帮助将不胜感激!