将数据放入字符变量 sas

putting data into character variable sas

我面临着将数据放入字符变量的问题。 所以我有一个长的转置数据集,其中我有三个变量:date(我事先转置的日期)var(具有我以前变量的三个不同输出)和 col1(包括我以前变量的值)。 现在我想创建第四个变量,它也有三个不同的输出。我的问题是我可以用我的代码创建变量 put 它总是创建缺失值。

data pair2;
 set data1;
if var="BNNESR" or var="BNNESR_r" or var="BNNESR_t" then output;
length all $ 20;
all=" ";
if var="BNNESR" then all="pdev";
if var="BNNESR_t" then all="trigger"; 
if var="BNNESR_r" then all="rdev";
drop var;
run;

之后我想通过 "all" 变量将其转置回去。我知道我可以在转置之前重命名旧变量,然后保留它们。 但是完整的计算会继续下去,实际上会变成一个宏,如果那样做就没那么容易了。

您的程序将只对输入数据进行子集化并添加一个新的空变量,因为您在为新变量赋值之前正在写出数据。

使用子集 IF(或 WHERE)语句而不是使用显式 OUTPUT 语句。一旦您的数据步骤具有明确的 OUTPUT 语句,SAS 将不再自动在数据步骤迭代结束时写入观察结果。

data pair2;
  set data1;
  if var="BNNESR" or var="BNNESR_r" or var="BNNESR_t" ;
  length all ;
  if var="BNNESR" then all="pdev";
  else if var="BNNESR_t" then all="trigger"; 
  else if var="BNNESR_r" then all="rdev";
  drop var;
run;

既然 IF 语句中的列表与重新编码步骤中的值相匹配,那么也许您只想使用 DELETE 语句?

data pair2;
  set data1;
  length all ;
  if var="BNNESR" then all="pdev";
  else if var="BNNESR_t" then all="trigger"; 
  else if var="BNNESR_r" then all="rdev";
  else delete;
  drop var;
run;