sas - 从堆积数据创建列
问题描述
捎带支持我问的一个类似问题(使用宏在数据集中按组对列求和)......
我有以下数据集:
Month Cost_Center Account Actual Annual_Budget
May 53410 Postage 23 134
May 53420 Postage 7 238
May 53430 Postage 98 743
May 53440 Postage 0 417
May 53710 Postage 102 562
May 53410 Phone 63 137
May 53420 Phone 103 909
May 53430 Phone 90 763
June 53410 Postage 13 134
June 53420 Postage 0 238
June 53430 Postage 48 743
June 53440 Postage 0 417
June 53710 Postage 92 562
June 53410 Phone 73 137
June 53420 Phone 103 909
June 53430 Phone 90 763
我想“拼接”它,以便每个月都有自己的实际列,同时按帐户对数值求和。
例如,我希望输出如下所示:
Account May_Actual_Sum June_Actual_Sum Annual_Budget
Postage 14562 37960 255251
Phone 4564 2660 32241
当不需要按月进一步分解时,其他用户提供的以下代码效果很好;但是,我不确定是否可以这样做(我厌倦了添加“按月条款” - 没有用)。
proc means data=Test N SUM NWAY STACKODS;
class Account_Description;
var Actual annual_budget;
by month;
ods output summary = summary_stats1;
output out = summary_stats2 N = SUM= / AUTONAME;
data want;
set summary_stats2;
run;
解决方案
- 使用 PROC MEANS 获取摘要 - 与上次相同。请阅读有关 PROC MEANS 的文档以了解 CLASS 语句的工作原理以及如何控制不同级别的输出。
- 使用 PROC TRANSPOSE 翻转数据宽度。由于预算金额在各行之间是一致的,所以你会没事的。
我猜您的下一组问题将是如何正确对列进行排序,因为您的月份不会排序,以及如何动态引用它们来计算本月至今的变化。这是不推荐这种数据结构的一些原因。
data have;
input Month $ Cost_Center $ Account $ Actual Annual_Budget;
cards;
May 53410 Postage 23 134
May 53420 Postage 7 238
May 53430 Postage 98 743
May 53440 Postage 0 417
May 53710 Postage 102 562
May 53410 Phone 63 137
May 53420 Phone 103 909
May 53430 Phone 90 763
June 53410 Postage 13 134
June 53420 Postage 0 238
June 53430 Postage 48 743
June 53440 Postage 0 417
June 53710 Postage 92 562
June 53410 Phone 73 137
June 53420 Phone 103 909
June 53430 Phone 90 763
;
;
;;
run;
*summarize;
proc means data=have noprint nway;
class account month;
var actual annual_budget;
output out=temp sum=actual_total budget_total;
run;
*transpose;
proc transpose data=temp out=want prefix=Month_;
by account budget_total;
var actual_total;
id month;
run;
输出:
推荐阅读
- c++ - 使用 C/C++ 中的派生类成员变量将参数传递给 Base 构造函数
- java - 为什么 Thymeleaf 找不到我的对象?
- java - Java 转换列表
列出 - python - 当省略 if 后的空格时,为什么 python3 内联 if 语句不会引发 SyntaxError?
- ssas - 在 SSAS 中创建 MDX 查询时从不同维度读取数据
- powershell - 查找字符串中任何一个数组元素的第一次出现 - Powershell
- python - 将文本保存到 docx 文件 python
- amazon-web-services - AWS ELB:503 服务暂时不可用
- python-3.x - Python - Selenium XPATH 查询不匹配
- php - postgresql 查询中的参数资源问题