将数据放入字符变量 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;
我面临着将数据放入字符变量的问题。 所以我有一个长的转置数据集,其中我有三个变量: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;