【问题标题】:How to insert uneven data rows into matrix in SAS?如何将不均匀的数据行插入SAS中的矩阵?
【发布时间】:2017-03-14 01:34:48
【问题描述】:

我有一个带有贷款 ID 的来源数据集。然后,我有一个相应的数据集,其中包含每个贷款 ID 的性能数据,它可以是性能数据集中的 10-40 行。

每个绩效贷款的开始日期也不相同,尽管有些确实重叠。我想要做的是获取性能数据集中的每个贷款 id 组,然后在数据集中的所有事件中创建一个特定列值的行。它们是否从不同的日期开始并不重要,我只想对齐这些值,因为这是贷款 id x 和 y 的第一个值。

例如:

身份证日期值

3 201601 100

3 201602 102

3 201603 103

--> 结果:

ID 值 1 值 2 值 3

3 100 102 103

我有两个问题。一是每个 id 的性能数据大小不同。我无法构造具有不同行长的矩阵。我假设我需要在每行的末尾附加 0 以满足预定义的宽度。

我的第二个问题是,我不确定如何读取绩效数据集以对贷款进行分组、提取值列、将该列构造为该 id 的行,然后插入到矩阵中。我知道如何在 Python 中做到这一点,但我需要使用 SAS。我可以在 SAS 中构建表,但我不知道如何追加行,只追加列。

如果有人可以就此提供一些指导,那将是一个很大的帮助。

【问题讨论】:

  • 这属于转置。因为它是 SAS 数据集而不是“矩阵”,所以要求相同数量的行/列的想法是无效的。查看 proc transpose 以重塑您的数据。

标签: sql sas format


【解决方案1】:

任何遇到类似问题的人最终只需要几行代码。

proc transpose  data =  new_data
            out =  new_data1;
            var trans_state;
            by id;
run;

输出将是

【讨论】:

  • 感谢 Reeza 提出 proc transpose 的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多