在 SAS 中提取 2 列并附加为行

问题描述

我在 SAS 中有两个数据集。第一个看起来像这样(假设它被称为 data 1(我只关心它的两列)

enter image description here

...第二个数据集(假设它被称为data 2)看起来像这样:

enter image description here

...我正在尝试提取第一个数据集的第二列并将其插入到第二个数据集中,以实现如下所示的内容:

Description

基本问题描述

我正在尝试从 SAS 中的数据集中提取两列,并将它们作为行添加到第二个数据集中。第一个数据集中的变量名称在它们自己的一列中(名为“变量名称”),而在第二个数据集中,每个变量都是带有相应数据的列标题(本身就是一个变量)。我提供的图像过于简单,因为实际数据本身很长。 基本上,我试图在 SAS 中找到允许我这样做的函数。

我的尝试

-我尝试使用 proc sql 将前两列提取为表,使用数据步骤将它们转换为数据框,对它们进行排序,然后使用 proc transpose 尝试将它们转换从长到宽,然后尝试使用某种 append 函数将它们附加到第二个数据集,但 append 不起作用。

-我尝试合并两个集合,但是使用 proc transpose 后合并似乎不起作用。

-我也尝试过转置第二个数据集然后合并它们,这有效(出于某种原因)但后来我无法将数据转回(以便我可以分析它,这是我做所有事情的目的)这个)。

我将使用哪些函数来执行此过程?

抱歉没有提供可复制的数据,我更多的是在寻找功能的建议,而不是详细的硬性解决方案。

解决方法

要强制 PROC TRANSPOSE 使用变量作为新变量名称的来源,请使用 ID 语句。所以如果你有第一个数据集:

data tall;
   input fruit $ count @@;
cards;
APPLE 1 PEACH 2 PEAR 2
;

您可以使用此代码进行转换。

proc transpose data=tall out=wide;
   id fruit;
   var count;
run;

然后,如果您有另一个数据集,其中已经包含变量 APPLE、PEACH、PEAR 等,那么只需将两者设置在一起即可。

data want;
  set wide have ;
run;

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...