在SAS中存储过程平均变量

在SAS中存储过程平均变量,sas,Sas,我想将TXN和TPV段的P1 P50 P99(段有10个不同的名称)保存到单独的变量中。但是,当我运行这段代码时,所有行只存储整体(所有段)p1p50 P99 我想要的是取决于应该添加的片段P1 P50 P99 请帮我做这件事,原谅我说话不好 尝试按段使用,而不是按类使用。注意:您必须首先按段对数据集进行排序。如果您希望将每个段的摘要数据合并到正确的行中,则需要按合并,而不是使用如果_N_=1 您需要: 按段对源数据集进行排序 使用NWAY选项从平均值输出数据集中消除“总计”观测值(\u TYP

我想将TXN和TPV段的P1 P50 P99(段有10个不同的名称)保存到单独的变量中。但是,当我运行这段代码时,所有行只存储整体(所有段)p1p50 P99

我想要的是取决于应该添加的片段P1 P50 P99


请帮我做这件事,原谅我说话不好

尝试按段使用
,而不是按类使用
。注意:您必须首先按
段对数据集进行排序。

如果您希望将每个
段的摘要数据合并到正确的行中,则需要按
合并,而不是使用
如果_N_=1

您需要:

  • 段对源数据集进行排序
  • 使用NWAY选项从
    平均值
    输出数据集中消除“总计”观测值(\u TYPE=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;
    

    就我所知,
    nway
    选项并不是绝对必要的,但也许最好还是使用它。否则,我猜您可能会在最终数据集中得到一个额外的(不匹配的)观察结果。
    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;