我有一个变量,该变量是一个和分数(" 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.freqdata
和work.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;