syntax - 如何在 SAS 中创建一个包含每个观察值的 Ridit 分数的变量?
问题描述
我有一个变量,它是一个总分(“fsum”),我需要计算每个观察的加权 ridit 分数并将其保存为一个新变量,以允许我在其他分析中使用该 ridits 作为一个连续变量。
我尝试在 proc freq 语法上使用 out 语句,但当然它只是保存了频率,而不是 ridit 分数(见下文)
proc freq data = ftest;
weight dataset_weight;
tables fsum / out = ridits scores = ridit;
run;
解决方案
您可以使用 ODS OUTPUT 捕获 RIDIT 行分数。 FREQ
TABLES
statement 选项SCOROUT
告诉过程创建包含 ODS 表名的 ODS OUTPUT rowscores
。
此示例代码创建两个数据集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;
推荐阅读
- python - 如何使用 Pandas 中的 MultiIndex 快速获取均匀分布的数据
- javascript - 为什么我的搜索结果页面可以获取输入词?
- linux - Linux 和 Windows Dualboot 之间的 Docker 容器共享
- php - Cron 作业根本没有运行,手动工作
- javascript - 如何将事件和对象作为参数发送到 Javascript eventlistener 函数?
- python - 将邮政编码 API 调用应用于数据框中的每一行
- python - 如何解释 mobilenet v3 ssd 的输出?
- list - Quill - 使用自定义格式实现几个有序列表
- django - 使用 AWS Elastic Beanstalk 进行部署时,我应该将静态文件存储在单独的 S3 中吗?
- node.js - 为什么当我尝试将文件从角度保存到节点时没有发送数据