【问题标题】:SAS - summing values down observationsSAS - 对观察值求和
【发布时间】:2014-08-17 21:21:53
【问题描述】:

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

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 没有零。

我对@9​​87654323@ 或data 步骤持开放态度,实际上了解这两种方法会很有用。

【问题讨论】:

标签: sas proc-sql


【解决方案1】:

这应该可以解决问题,在 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 ;

【讨论】:

    【解决方案2】:

    您可以使用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()

    【讨论】:

      【解决方案3】:

      可以使用sql-groupby-sum聚合函数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        相关资源
        最近更新 更多