0
    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 的部分。

请帮我解决这个问题,并原谅我的糟糕词汇。

4

3 回答 3

1

你需要:

  1. 对源数据集进行排序segment
  2. 使用NWAY选项从MEANS输出数据集 ( _TYPE_ = 0)中消除“总计”观察值。
  3. 将输出数据集合并回您的源。

所以,一个完整的解决方案应该是这样的:

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-06T13:27:59.057 回答
0

如果您希望每个segment合并到正确行的汇总数据,您将需要执行 amerge by而不是 using if _N_=1

于 2013-06-06T13:04:14.863 回答
0

尝试使用by segment而不是class. 请注意,您必须先对数据集进行排序segment

于 2013-06-06T08:33:46.563 回答