当存在多列不同数据类型(数字、字母数字和字符)时,如何在 SAS EG 中转置?

问题描述 投票:0回答:1

我有一个大约 30,000 行和大约 30 列的数据集,包括:

  • 1 列是唯一标识符 (SSN)
  • 6列是诊断ICD代码
  • 6栏是各个ICD诊断代码的描述

原始数据如下:

在此输入图像描述原始数据

我想重组数据,“组合”诊断代码和诊断描述,以便每行包含 1 个 SSN 标识符、1 个诊断代码及其各自的诊断代码。 这样,具有多个诊断的 SSN 就会打开单独的行。

这是我想要的表格结构:

在此处输入图像描述转置变量后的数据结构。

由于我使用 SAS EG,因此我使用“转置”任务。分配变量时 SAS EG 给出的选项有:

  1. 转置变量(我已经单独尝试过 ICD 代码和 ICD 代码/描述)
  2. 复制变量(那些与 SSN/ICD 无关的变量)
  3. 新列名称(限制 1):(我在这里不包含任何内容)
  4. 分组分析依据:(我使用 SSN 作为该变量)。

当我尝试调换 ICD 代码和描述列时,它看起来像这样: 图片来自 SAS EG 转置后的结果

SAS EG 创建 4 个新变量:Column1 - Column4;我意识到这些来自上面的“新列名称”选项,但它在所有 4 列中混合了 ICD 代码和描述。

无论我是否首先尝试“转置”ICD 代码列,同时在步骤 1 中“复制”“描述”列,并在第二步中转置“描述”,它都会继续组合这些列,以便有新创建的 SAS“Column1 - Column4”变量中的代码和描述。

我是否没有使用正确的任务(过程转置)来获得它,以便第一列是 SSN,第二列是 ICD 代码,第三列是相应的 ICD 描述?

感谢您阅读到目前为止!

sas transpose combine enterprise-guide icd
1个回答
0
投票

您不会想使用 EG 任务来进行如此复杂的转置。 您需要为其编写 SAS 代码。 转置任务用于简单的转置。

类似...

data want;
  set have;
  array code code1-code6;
  array desc desc1-desc6;
  do i = 1 to dim(code);
    code_out = code[i];
    desc_out = code[i];
    output;
  end;
  keep ssn code_out desc_out;
run;

实际上并不是很复杂,但比任务支持的更复杂。

© www.soinside.com 2019 - 2024. All rights reserved.