SAS SD 和百分位数
SAS SD and Percentiles
我正在用 SAS 编写公式。我需要在所有这些中使用标准偏差和百分位数。但我不确定如何在 SAS 中编写它。
data test;
set test1;
if ((the 100th percentile of X)-(99th percentile of X))>(SD of X) then delete;
run;
我只是不确定如何在 SAS 中写出这些
百分位数和标准差是整个数据的特征,而不仅仅是一个观察值。您的逻辑似乎表明您会删除所有观察结果。大概您实际上想将每个观察值与分布的某些特征进行比较。
基本方法是将您想要的百分位数和标准差作为新变量添加到数据中。您可以使用 proc univariate
和 output
语句来计算您感兴趣的统计信息并将它们保存到新的数据集中。
然后您将其合并回您的原始数据,因此您现在将拥有所需的变量。那时你可以使用你已经拥有的基本相同的语法。
这应该让你开始:
data tmp;
do i=1 to 100;
x=rannor(123);
output;
end;
run;
proc univariate data=tmp noprint;
var x;
output out=pctls max=max p99=p99 std=std;
run;
data tmp;
if _n_=1 then do;
set pctls;
end;
set tmp;
/* Just making up a condition here */
if x>p99 then delete;
run;
我正在用 SAS 编写公式。我需要在所有这些中使用标准偏差和百分位数。但我不确定如何在 SAS 中编写它。
data test;
set test1;
if ((the 100th percentile of X)-(99th percentile of X))>(SD of X) then delete;
run;
我只是不确定如何在 SAS 中写出这些
百分位数和标准差是整个数据的特征,而不仅仅是一个观察值。您的逻辑似乎表明您会删除所有观察结果。大概您实际上想将每个观察值与分布的某些特征进行比较。
基本方法是将您想要的百分位数和标准差作为新变量添加到数据中。您可以使用 proc univariate
和 output
语句来计算您感兴趣的统计信息并将它们保存到新的数据集中。
然后您将其合并回您的原始数据,因此您现在将拥有所需的变量。那时你可以使用你已经拥有的基本相同的语法。
这应该让你开始:
data tmp;
do i=1 to 100;
x=rannor(123);
output;
end;
run;
proc univariate data=tmp noprint;
var x;
output out=pctls max=max p99=p99 std=std;
run;
data tmp;
if _n_=1 then do;
set pctls;
end;
set tmp;
/* Just making up a condition here */
if x>p99 then delete;
run;