如何为每个观察值创建一个包含Ridit评分的SAS变量



我有一个变量,该变量是一个和分数(" fsum"(,我需要计算每个观察值的加权骑行得分,并将其保存为新变量,以便我允许我使用赛车作为其他分析中的连续变量。

我尝试使用Proc Freq语法上的OUT语句,但是当然它只是保存了频率,而不是骑行分数(见下文(

proc freq data = ftest;
    weight dataset_weight;
    tables fsum / out = ridits scores = ridit;
run;

您可以使用ODS输出来捕获Ridit行分数。 FREQ TABLES语句选项 SCOROUT讲述了创建包含ODS表名称 rowscores的ODS输出的过程。

此示例代码创建两个数据集work.freqdatawork.riditscores,第一个是来自FREQ TABLES语句,另一个来自ODS OUTPUT语句:

data have;
  do id = 1 to 100;
    do test = 1 to 6;
      grade = 60 + ceil(40 * ranuni(123));
      array ws (6) _temporary_ (0.15, 0.15, 0.10, 0.15, 0.10, 0.35);
      W = ws(test);
      output;
    end;
  end;
run;
ods noresults; * prevent actual ODS destination generation, but still create ODS output tables;
ods output rowscores=work.riditscores;  * capture the desired ODS output table;
proc freq data=have;
  weight W;
  tables grade*test 
  / scores=ridit 
    all
    scorout
    out=freqdata
  ;
run;
ods results;

不确定这是否是最明智的,而是用名为ridit_for_<score>的新列转换为一排。

proc transpose data=riditscores out=ridit_across prefix=ridit_for_;
  by table;
  id grade;
  var score;
run;

最新更新