如何根据SAS中的条件删除单行?

时间:2018-04-23 16:47:22

标签: sas

我有以下数据集,它是一组变量及其各自的p值和来自简单线性回归的R平方值。

data have;
input Variable$ Probt R_value tie$;
cards;
    X1  0.0016  0.4344  .
    X2  0.0003  0.5204  .
    X3  0.0001  0.7497  yes
    X4  0.0001  0.9026  yes
run;

但是,正如您所看到的,有两个变量的Probt值为0.001,并且我创建了一个名为tie的变量来捕获两个变量具有相同p值的情况。< / p>

我想要的是以下内容。在存在平局的情况下,我想通过从tie变量中选择具有最高R_value的变量来打破平局,使其看起来如下所示

data want;
    input Variable$ Probt R_value tie$;
cards;
    X1  0.0016  0.4344  .
    X2  0.0003  0.5204  .
    X4  0.0001  0.9026  yes
run;

2 个答案:

答案 0 :(得分:1)

假设probt值与您的示例中的值完全相同,您可以使用last.变量执行简单操作(也假设它们按顺序排序,如果不使用{ {1}}首先):

proc sort

如果data want; set have; by descending probt r_value; if last.probt; *if it is the last record from any set of identical probt values, keep it; run; 值被四舍五入并且不完全相同,则需要首先创建一个真正相同的变量(使用round)。如果您已经计算了probt,那么您可能已经完成了这项工作。

答案 1 :(得分:1)

如下所示。但要注意@reeza和@joe

提到的计算结合值
var value;
for (var i = 1; i <= 10; i++) {
  value = i;
  foo(value);
}

function foo() {
  console.log(value);
}