我有一个数据集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;