proc means data=har.&seg_cell n mean std p1 p50 p99;
class segment;
var txn tpv;
output out=stat_1 (drop = _TYPE_ _FREQ_)
P1(txn)=txn_P1_T P1(tpv)=tpv_P1_T
P99(txn)=txn_P99_T P99(tpv)=tpv_P99_T
;
where POS_flag = &POS and cell=&gcell;
title "Stat Summary - Test_POS";
run;
data har.&seg_cell;
if _N_=1 then set stat_1;
set har.&seg_cell;
run;我想将TXN和TPV段的P1 P50 P99 (段有10个不同的名称)保存到单独的变量中。但是当我运行这段代码时,只存储了所有行的总体(所有段) P1 P50 P99。
我想要的是取决于特定的P1 P50 P99应该添加的部分。
请帮助我解决这个问题,并请原谅我的脏话。
发布于 2013-06-06 21:27:59
您需要:
通过segment
MEANS输出数据集中出现的“总计”观察值。所以,一个完整的解决方案应该是这样的:
proc sort data=har.&seg_cell;
by segment;
run;
proc means nway data=har.&seg_cell n mean std p1 p50 p99;
class segment;
var txn tpv;
output out=stat_1 (drop = _TYPE_ _FREQ_)
P1(txn)=txn_P1_T P1(tpv)=tpv_P1_T
P99(txn)=txn_P99_T P99(tpv)=tpv_P99_T;
where POS_flag = &POS and cell=&gcell;
title "Stat Summary - Test_POS";
run;
data har.&seg_cell;
merge har.&seg_cell stat_1;
by segment;
run;发布于 2013-06-06 16:33:47
尝试使用by segment而不是class。注您必须首先按segment对数据集进行排序。
发布于 2013-06-06 21:04:15
如果希望将每个segment的汇总数据合并到适当的行中,则需要执行merge by而不是使用if _N_=1。
https://stackoverflow.com/questions/16955123
复制相似问题