微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。