包括所有'列限制在where语句中

时间:2016-10-07 21:57:12

标签: sas

对不起,如果已经回答了这个问题,我已经搜索了但是很难接近任何接近的事情。因此,在proc表格中,我一直遇到一个问题,我希望能够创建具有Total列的表,但它显然比这更复杂。例如,让我们说我需要为亚利桑那州参与者制作一个具有相应统计列的表,然后是所有参与者的统计列。如果我将where语句限制为State = Arizona,显然总列(使用All)实际上只包含Arizona参与者,这不是我想要的。较少数量的表的解决方法是使一个表不受限制,然后制作一个受限制的表,并进行复制和粘贴,但当我有90个表时,这不是我想要做的事情表格,每个州一套。

我唯一想到的就是创建某种虚拟变量,但我不确定如何去做。

编辑: 所需的表格(在这个特殊情况下,我在寻求帮助时,我猜它不是一个专栏,但如果解决方案最终只能用于一个列,我可能会重组我的表格)。我最终希望为每个州制作一个文件,并在每个文件中单独分解每个问题,显示全州总数和州总数。我有一个宏设置来做到这一点。 Desired table

1 个答案:

答案 0 :(得分:0)

考虑一种SQL解决方案,您可以使用派生表子查询在新列中包含 All 数据聚合。具体来说,您将使用 State 查询交叉加入 All 查询,因为不使用任何连接键。并且由于总聚合查询仅产生标量值,因此它将重复每一行。

示例数据

* ID    Participant     Score   State
* 1     Angela Andrews  415     Arizona
* 2     Brandon Baker   813     Arizona
* 3     Charlene Clark  323     Arizona
* 4     David Douglas   689     Illinois
* 5     Erin Ellis      501     Illinois
* 6     Frank Fillmore  739     Illinois

SAS 代码

注意:用于外部主查询中的所有列的Aggregate functions是可互换的,因为只有一个值在Max(Val) = Min(Val) = Mean(Val) ...上运行 - 包含在内以用于说明:

proc sql;
    CREATE TABLE newdata AS
    SELECT data.State, 
           COUNT(data.Score) As StateCount,
           SUM(data.Score) As StateTotal,
           MEAN(data.Score) As StateMean,
           MEDIAN(data.Score) As StateMedian,       
           STD(data.Score) As StateSteDev,
           VAR(data.Score) As StateVariance,

           MAX(total.AllCount) As AllCount,
           MIN(total.AllTotal) As AllTotal,
           MEAN(total.AllMean) As AllMean,
           MEDIAN(total.AllMedian) As AllMedian,
           MAX(total.AllMedian) As AllSteDev,
           AVG(total.AllVariance) As AllVariance       
    FROM data, 
        (SELECT COUNT(data.Score) As AllCount,
                SUM(data.Score) As AllTotal,
                MEAN(data.Score) As AllMean,
                MEDIAN(data.Score) As AllMedian,       
                STD(data.Score) As AllSteDev,
                VAR(data.Score) As AllVariance 
         FROM data sub) As total
    GROUP BY data.State;
 quit;

此外,您始终可以使用WHERE子句限制外部主查询:WHERE data.State = 'Arizona'

<强>输出

Obs State    StateCount StateTotal StateMean StateMedian StateSteDev StateVariance AllCount AllTotal AllMean AllMedian AllSteDev AllVariance 
1   Arizona  3          1551       517       415         260.438     67828         6        3480     580      595      595       38193.2 
2   Illinois 3          1929       643       689         125.491     15748         6        3480     580      595      595       38193.2