我有一个数据集x =(1,4,7,8,10,...................),它有这些随机值。我想找到数据集的中位数,然后将其存储在呼叫中,以便我可以用来从中位数中找出每个观察值的差异。
通过仅提及变量名称来查找此数据集的中位数的功能是什么?
我想要以下格式的数据:
X X-median
1 1-median
4 4-median
7 7-median
8 8-median
10 10-median
答案 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;