Syntax 如何在SAS中创建一个变量,其中包含每个观察的Ridit分数?
我有一个变量,它是一个总分(“fsum”),我需要计算每个观察的加权ridit分数,并将其保存为一个新变量,以便在其他分析中使用ridit作为一个连续变量 我尝试在proc-freq语法上使用out语句,但它当然只是保存了频率,而不是ridit分数(见下文)Syntax 如何在SAS中创建一个变量,其中包含每个观察的Ridit分数?,syntax,sas,Syntax,Sas,我有一个变量,它是一个总分(“fsum”),我需要计算每个观察的加权ridit分数,并将其保存为一个新变量,以便在其他分析中使用ridit作为一个连续变量 我尝试在proc-freq语法上使用out语句,但它当然只是保存了频率,而不是ridit分数(见下文) 您可以使用ODS输出捕获RIDIT行分数FREQ表格语句选项SCOROUT说明创建ODS输出的过程,其中包括ODS表格名称行分数 此示例代码创建两个数据集work.freqdata和work.riditscores,第一个来自FREQ表语句
您可以使用ODS输出捕获RIDIT行分数
FREQ
表格
语句选项SCOROUT
说明创建ODS输出的过程,其中包括ODS表格名称行分数
此示例代码创建两个数据集work.freqdata
和work.riditscores
,第一个来自FREQ
表
语句,另一个来自ODS输出
语句:
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\u for
您可以使用ODS输出捕获RIDIT行分数
FREQ
表格
语句选项SCOROUT
说明创建ODS输出的过程,其中包括ODS表格名称行分数
此示例代码创建两个数据集work.freqdata
和work.riditscores
,第一个来自FREQ
表
语句,另一个来自ODS输出
语句:
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\u for
谢谢你,理查德。这只是生成一个数据集,保存proc freq的输出。我需要的是将每个观察的ridit分数存储为变量(即,每个观察应有一个分数)-我希望这是有意义的!(这里的“保存输出”是指它生成一个汇总表,而不是保存每个观察的值)将输出转换为一行。对不起,仔细看,您的第一个答案是正确的。(我没有正确理解我的目标)谢谢你的帮助!谢谢你,理查德。这只是生成一个数据集,保存proc freq的输出。我需要的是将每个观察的ridit分数存储为变量(即,每个观察应有一个分数)-我希望这是有意义的!(这里的“保存输出”是指它生成一个汇总表,而不是保存每个观察的值)将输出转换为一行。对不起,仔细看,您的第一个答案是正确的。(我没有正确理解我的目标)谢谢你的帮助!请提供示例输入数据和所需输出。请提供示例输入数据和所需输出。
proc transpose data=riditscores out=ridit_across prefix=ridit_for_;
by table;
id grade;
var score;
run;