我想对基于特定标识符的特定列的一组观察值求和。例如,假设我有类似下面的数据
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 SQL
或data
步骤持开放态度,事实上知道这两种方法会很有用。
答案 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 ;