在SAS中转置复杂数据集

时间:2019-06-25 21:54:36

标签: sas

我有一个奇怪的数据集,希望大家能帮助我。我有一组特定环境污染物水平的数据集,这些数据是通过一组研究参与者以多种方式进行测量以及检测极限的。我需要多种格式的文件,但不幸的是它们目前很长,而且命名约定很难翻译。

这是现在的样子:


ID   Class      Name    Weight Amount_lipids Amount_plasma LOD 

1 AAA Lead 1.55 44.0 10.0 5.00 1 AAB Mercury 1.55 222.0 100.0 75.00 2 AAA Lead 1.25 25.5 12.0 5.00

我尝试了多种形式的Proc Transpose,但没有运气,这似乎比指定前缀可以处理的复杂。

by participant_id;
var Name WEIGHT AMOUNT_LIPIDS AMOUNT_PLASMA LOD;
run;

我希望它看起来像这样:

ID Weight Lead_lip Lead_plas Lead_LOD Mercury_lip Mercury_plas Mercury_LOD
1  1.55   44.0     10.0       5.0     222.0   100.0        75.0
2  1.25   25.5     12.0       5.0     .           .        .

我得到的是许多随机标记的变量,我无法对其进行整理。谁能提供一些建议?

1 个答案:

答案 0 :(得分:2)

复杂的转换通常涉及数组的多个步骤TRANSPOSEDATA。有时,过于复杂的转换暗示着真正需要的是诸如tabulatereport之类的报告程序,而不是数据转换。

这是双重转置:

data have;
input ID   Class $     Name $   Weight Amount_lipids Amount_plasma LOD;datalines;
1   AAA Lead    1.55    44.0         10.0      5.00
1   AAB Mercury 1.55    222.0        100.0     75.00
2   AAA Lead    1.25    25.5         12.0      5.00
run;

proc transpose data=have out=want_intermediate;
  by id weight name;
run;

proc transpose data=want_intermediate out=want;
  by id weight;
  id name _name_;
run;