【发布时间】:2019-05-01 21:27:30
【问题描述】:
如果不是,我想将变量的最大值重新编码为 1 和 0。对于每个变量,可能有多个具有最大值的观测值。每个值的最大值不是固定的,即从一个周期到另一个周期,每个变量的最大值可能会发生变化。而且有数百个变量,不能“硬编码”任何东西。
最终产品将具有与原始表格相同的维度,即与 0 和 1 的矩阵相同的行数和列数。
这是在 SAS 中。我试图计算每个变量的最大值,然后将这些最大值作为新的观察结果附加到数据中。然后将每个变量的列与“最大”观察值进行比较......查看以下示例并没有帮助:
- SQL
- 数据步中的数组
- proc 转置
- 格式化
任何见解将不胜感激。
【问题讨论】:
-
一种方法是计算 PROC MEANS 中所有变量的 MAX,输出到具有一条记录的数据集,然后将其连接到原始数据集。然后您可以使用数组将相应的原始值与 MAX 值进行比较。完成后,您可以删除所有 MAX 值列
-
请展示您到目前为止所做的尝试。我建议首先查看 PROC STDIZE。但是 2 或 4 应该有可以工作的选项。
-
@CraigSrsen 你能解释一下如何与 MAX 值进行比较吗?我已将 MAX 附加到数据集,但不知道如何比较。
-
您有 2 个数组 - 原始值数组 A 和列 MAXes B 的数组。'如果 A[i] = B[i] then A[i] = 1;否则 A[i] = 0;'虽然最佳做法是将 1 和 0 放在第三个数组 C 中,但不要覆盖原始数据。
标签: sas data-manipulation