gpt4 book ai didi

excel - SAS proc转置并输出到excel

转载 作者:行者123 更新时间:2023-12-02 12:12:13 25 4
gpt4 key购买 nike

我提出的另一个 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 |

有什么方法可以获得第一个所需的输出吗?

最佳答案

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

data testData;  infile datalines dsd delimiter='|';  input name $ category $ level score;  datalines;John  |    cat1    |     1    |    80John  |    cat1    |     2    |    70John  |    cat1    |     3    |    10John  |    cat2    |     1    |    60John  |    cat2    |     2    |    95John  |    cat2    |     3    |    43John  |    cat2    |     4    |    28;run;ods html file="C:\SomePath\MyFile.xls";proc report  data=testData;  columns name category,level,score;  define name / group;  define category / across '';  define level / across '';  define score / sum '';run;ods html close;

关于excel - SAS proc转置并输出到excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com