SAS PROC 转置数据

标签 sas

在 SAS 中,我有一个类似于下面的数据集。

ID   TRACT    meanFA    sdFA      medianFA
1    t01      0.56      0.14      0.56
1    t02      0.53      0.07      0.52
1    t03      0.71      0.08      0.71
2    t01      0.72      0.09      0.72
2    t02      0.83      0.10      0.86
2    t03      0.59      0.10      0.62

我不确定这里的转置概念是否正确...但我希望数据看起来像下面的那样。

ID   t01_meanFA  t01_sdFA  t01_medianFA  t02_meanFA  t02_sdFA  t02_medianFA  t03_meanFA  t03_sdFA  t03_medianFA
1    0.56        0.14      0.56          0.53        0.07      0.52          0.71        0.08      0.71
2    0.72        0.09      0.72          0.83        0.10      0.86          0.59        0.10      0.62


proc transpose data=TRACT out=newTRACT;
   var meanFA sdFA medianFA;
   by id;
   id tract meanFA sdFA medianFA;
run;

我一直在研究上面的 SAS 代码,但没有成功。任何想法或建议都会很棒!

最佳答案

双转置是您实现这一目标的方法。将其获取到一个数据集,该数据集每个 ID 每个所需变量都有一行,所以

ID=1 variable=t01_meanFA value=0.56
ID=1 variable=t01_sdFA value=0.14
...
ID=2 variable=t01_meanFA value=0.72
...

然后使用 ID=variable 和 var=value(或您选择命名这些列的任何名称)进行转置。您可以通过创建值数组 (array vars[3] meanFA sdFA medianFA;) 来创建中间数据集,然后遍历该数组,将变量名称设置为 catx('_', tract,vname(vars[n]));(vname获取数组元素的变量名)。

关于SAS PROC 转置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082428/

相关文章:

python - SQLite 和 PROC SQL 在评估空格时的区别

sas - 在 RSUBMIT block 中调用本地 SAS 宏?

SAS 数字到字符的转换?

sas - 如何使用 SAS 程序从 PDF 读取数据

sas - 为什么不 %let 创建一个局部宏变量?

excel - 使用 SAS 导入时截断字符

linux - 可以用SAS执行Linux命令吗?

time - 格式化 HH :MM column when reading data into SAS

sas - 是否有一个函数可以从一串数字中删除破折号,而不删除前导零?

sas - set 语句中缺少值和多个数据集的赋值