根据另一个变量的内容填充 SAS 变量

  • 本文关键字:变量 填充 SAS 另一个 sas
  • 更新时间 :
  • 英文 :


我有一个变量,textvar,看起来像这样:

type=1&name=bob
type=2&name=sue

我想创建一个如下所示的新表:

type  name
1     bob
2     sue

我的方法是使用scan来拆分&上的变量,因此对于我的第一个观察结果

var1      var2
type=1    name=bob

所以现在我可以再次使用扫描来拆分=

vname = scan(var1, 1, '=');
value = scan(var1, 2, '=');

但是我现在如何将value分配给名为 vname 的变量?

PROC TRANPSOSE 是最快的方法。 你需要一个 ID 变量(虚拟或真实)。

data test;
informat testvar $50.;
input testvar $;
datalines;
type=1&name=bob
type=2&name=sue
;;;;
run;
data test_vert;
set test;
id+1;
length scanner $20 vname vvalue $20;
scanner=scan(testvar,1,"&");
do _t=2 by 1 until (scanner=' ');   
    vname=scan(scanner,1,"=");
    vvalue=scan(scanner,2,"=");
    output;
    scanner=scan(testvar,_t,"&");
end;
run;
proc transpose data=test_vert out=test_T;
by id;
id vname;
var vvalue;
run;

这有帮助吗?SAS 中的动态变量名称

我想我有一些代码来解决这个问题,但把它留在了我的工作场所。

显然,

您还没有包含真实数据,但是如果每行原始数据的格式相同,您不能对某些值进行硬编码吗? 我的代码将"="和"&"转换为","以使扫描功能更易于使用。

data want (keep=type name);
set test;
_newvar=translate(testvar,",,","&=");
    type=input(scan(_newvar,2),best12.);
    length name $20;
    name=scan(_newvar,4);
run;

最新更新