【问题标题】:SAS proc transpose and output to excelSAS proc转置并输出到excel
【发布时间】:2011-05-05 13:23:34
【问题描述】:

我提出的另一个 SAS 问题(我注意到这些问题在这里并不经常出现......):

我有一个包含这样的数据集:

Name  |  Category  |   Level  |  Score
John  |    cat1    |     1    |    80
John  |    cat1    |     2    |    70
John  |    cat1    |     3    |    10
John  |    cat2    |     1    |    60
John  |    cat2    |     2    |    95
John  |    cat2    |     3    |    43
John  |    cat2    |     4    |    28

输出(excel格式)应该是这样的:

      |    cat1      |    cat2       |
name  | 1  |  2  | 3 | 1 | 2 | 3 | 4 | 
John  | 80 | 70  |10 |60 |95 |43 |28 |

我现在要做的是使用proc transpose 以正确的顺序获取数据,然后使用proc export 转到.xls。

这很好用,除了一件事。我无法让第二层细分工作。所以现在,在我的proc transpose 之前,我实际上在我的数据集中连接了我的类别和级别(例如,使其成为'1_cat1'),然后转置这个值,给我以下输出:

name  | 1_cat1 |  2_cat1 | 3_cat1 | 1_cat2 | 2_cat2 | 3_cat2 | 4_cat2 | 
John  |   80   |    70   |   10   |   60   |   95   |   43   |   28   |

有什么方法可以得到第一个想要的输出?

【问题讨论】:

  • 没有 SAS 问题不会经常出现在这里。如需更专注于 SAS 的社区,请访问 www.runsubmit.com

标签: excel sas transpose


【解决方案1】:

假设您熟悉将其导入 Excel 的 ODS 选项(我只是懒惰地使用 html 并将其另存为 .xls,但您可以改用标签集等),这是一个 @987654322 @解决方案以您正在寻找的格式显示数据。查看 proc 报告中 across 变量的使用情况。可能有一种方法可以抑制输出中 cat1 下未使用的列,但我现在想不起来了。

数据 testData;
  infile 数据线 dsd delimiter='|';
  输入名称$类别$等级分数;
  数据线;
约翰 |猫1 | 1 | 80
约翰 |猫1 | 2 | 70
约翰 |猫1 | 3 | 10
约翰 |猫2 | 1 | 60
约翰 |猫2 | 2 | 95
约翰 |猫2 | 3 | 43
约翰 |猫2 | 4 | 28
;
跑;

ods html 文件="C:\SomePath\MyFile.xls";

过程报告
  数据=测试数据;
  列名称类别、级别、分数;
  定义名称/组;
  定义类别/跨'';
  定义级别/跨'';
  定义分数/总和'';
跑;

ods html 关闭;

【讨论】:

  • 再次感谢。我对 ODS 的熟悉程度并不高,但会更多地研究它,因为 proc 报告确实提供了我需要的输出布局。现在只需要将它放入我的 xls 中。刚才,尝试了ods excelxp,看起来不错(除了颜色:))。但我担心缺失值列会变得很痛苦。
【解决方案2】:

我认为您无法使用 proc transpose 直接转到所需的输出,因为您希望每个类别跨越多个级别。您可能想要研究另外两个过程,REPORT 和 TABULATE。我相信您可以直接从其中任何一个中执行此操作,但是自从我使用它们以来已经有好几年了。第三种选择是使用 ODS 创建一个 XML 文件,您可以在其中几乎准确地控制您希望输出的显示方式,尽管学习如何执行此操作需要更多的努力。

【讨论】:

  • 我用下面的 sasfrogs 示例尝试了 Proc 报告,并且确实指出了寻找我的解决方案的正确方向。稍后还将尝试 proc tabulate。谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多