存储数据集的中位数并将其用于计算

时间:2016-04-18 16:23:56

标签: sas

我有一个数据集x =(1,4,7,8,10,...................),它有这些随机值。我想找到数据集的中位数,然后将其存储在呼叫中,以便我可以用来从中位数中找出每个观察值的差异。

通过仅提及变量名称来查找此数据集的中位数的功能是什么?

我想要以下格式的数据:

X  X-median
1  1-median
4  4-median
7  7-median
8  8-median
10  10-median

2 个答案:

答案 0 :(得分:1)

不要在宏变量中使用它。只需将其组合为数据集即可。

proc means data=sashelp.class noprint;
  var age;
  output out=age_median median(age)=age_median;
run;

data class_fin;
  if _n_=1 then set age_median(keep=age_median);
  set sashelp.class;
  age_minus_median = age - age_median;
run;

当您以这种方式设置数据集(带有if _n_=1的单行数据集)时,您将其值复制到数据集的每一行上,就像您将其与某些通用值合并一样。

答案 1 :(得分:0)

这可以在PROC SQL中轻松完成;

假设您在表A中有x值并创建一个新表B:

PROC SQL;
   CREATE TABLE B AS SELECT x,median(x) AS median,x-median(x) AS offset FROM A;
QUIT;