Loops SA根据10个现有变量创建10个新变量,并使用do循环 我有一个PAR文件,有10个变量:Q1-Q10,其值在0-1范围内。 我需要为每个变量q1、q2、q3创建。。。一个新变量,将根据以下范围接收1-5的值 0
0.2Loops SA根据10个现有变量创建10个新变量,并使用do循环 我有一个PAR文件,有10个变量:Q1-Q10,其值在0-1范围内。 我需要为每个变量q1、q2、q3创建。。。一个新变量,将根据以下范围接收1-5的值 0,loops,if-statement,sas,Loops,If Statement,Sas,0.2
2 等等 最终,对于每个q,应该有一个新列,该列应该是一个附加列,其值为1-5 我已经设法为一个变量创建了它,但是如何才能以更有效的方式为所有10个变量创建它呢可以使用数组 数据par1; 设定标准杆; 阵列q{*}q1-q10; 数组qq{10}; i=1到dimq; 如果0data PAR1; set PAR; if q1>0 and q1<0.2 then do; qq1=1;end; if q1>0.2 and q1<0.4 then do; qq1 =2;end; if q1>0.4 and q1<0.6 then do; qq1=3;end; if q1>0.6 and q1<0.8 then do; qq1=4;end; if q1>0.8 and q1<1 then do; qq1=5;end; run; proc print data=PAR1; run;
这将通过它们在数组中的索引(即位置)遍历所有变量。所以q[2]引用了q2等等。对于每个变量,将根据您提供的逻辑分配新变量
另一方面,请注意,您的逻辑中有不等式,但没有等式。例如,当q1=0.2时,这将导致缺少值。您确定您的数据边界上没有任何值吗?现在,如果将该值解释为0.2,则可能会缺少一个值。