SAS - 对观察值进行求和

时间:2014-08-17 21:21:54

标签: sas proc-sql

我想对基于特定标识符的特定列的一组观察值求和。例如,假设我有类似下面的数据

A 4 5 6
B 3 3 2
A 3 4 2
C 3 2 0
B 3 7 3
B 2 4 1

假设我想要按照第1列中的标识符对所有值求和,因此我按照我选择的特定列(2,3或4)得到A,B和C的总计。 然后在单独的数据集中输出超出特定标准的A,B或C。

例如,我想要第4列的总和(基于第1列中的标识符)高于值1,我的输出数据集应该返回A = 8,B = 6,显然没有C作为其零。

我对Proc SQLdata步骤持开放态度,事实上知道这两种方法会很有用。

3 个答案:

答案 0 :(得分:1)

您可以使用 proc sql 对列进行分组和求和。假设您有标识列 col1, col2, col3 和值列 value 的数据:

proc sql;
        create table SUMS as
        select COL1, COL2, COL3, sum(VALUE) as VALUE_SUM
        from YOUR_TABLE
        group by COL1, COL2, COL3;
quit;

对于你们中的 Python 人来说,这类似于 Pandas 中的某些内容,例如 df.groupby(['col1', 'col2', 'col3'])['value'].sum().rename('value_sum').reset_index()

答案 1 :(得分:0)

您可以使用sql - group by - sum聚合函数

答案 2 :(得分:0)

这应该可以解决问题,在from之后为你的标准添加一个where语句。

proc sql ;
  create table output as
  select Column1, sum(column2) as ColSum2, sum(column3) as ColSum3,
         sum(column4) as ColSum4
  from your_data_table_here
  group by 1
  order by 1
  ;
quit ;