存储数据集的中值并使用它进行计算

  • 本文关键字:计算 数据集 存储 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

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

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的单行数据集)时,您会将其值复制到数据集上的每一行,有点像将其与某个通用的按值合并。

这可以在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;

最新更新