【问题标题】:Transpose a SQL / SAS table row to multiple columns将 SQL/SAS 表行转置为多列
【发布时间】:2021-08-02 11:08:37
【问题描述】:

我有一个基于英超联赛结果通过 PROC SQL 在 SAS 中创建的数据集,需要将列 Result 转换为多个单独的列,同时将每个 Team 分组为一行。目前我的桌子看起来像:

Team Result
Arsenal D
Arsenal L
Arsenal D
Arsenal W
Chelsea L
Chelsea D

我正试图让它看起来像:

Team Form
Arsenal D L D W
Chelsea L D W W
Tottenham D W L W
Arsenal W W L L

以上只是简短的示例,即表格包含过去 6 周内每支英超球队的状态。

谢谢!

【问题讨论】:

  • SQL 表代表 无序 集。您的重新排列看起来取决于行的某些顺序,因此无法完成。令人高兴的是,SAS 数据集是有序的,因此您可以使用data stepproc 来执行此操作。
  • @GordonLinoff 感谢 Gordon - 我非常感谢您的快速回复!正如你提到的,我设法使用 PROC TRANSPOSE 解决了这个问题。

标签: sql sas


【解决方案1】:

首先我们需要对数据进行排序,然后添加一个 id 列来帮助我们转置数据集。试试这个,看看它是否有效。我没有时间测试解决方案,因为我无法再访问 SAS。

proc sort data=dataset;
by Team;
run;

data dataset;
set dataset;
by Team;
if first.Team then New_column=0;
New_column+1;
run;

proc transpose data= dataset out= dataset_out(drop=_NAME_) prefix= Form_;
by Team;
var Form;
id New_column;
run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多