sas - 在 SAS 中自动创建指示变量
问题描述
我正在使用一个 SAS 数据集,其中包括为单个患者开出的多达 30 种药物。药物编码为 med1、med2 ... med30。每种药物都由一个 5 位字符变量表示。然后,我可以使用标识符对药物名称进行编码,以及该特定药物是局部抗生素还是全身抗生素。
对于每位患者,我想使用所有 30 种药物代码来创建一个变量,指示患者是仅使用局部抗生素、仅全身抗生素,还是同时使用局部和口服抗生素。因此,如果 30 种药物中的任何一种是全身性抗生素,我希望患者编码为oral_antibiotic=1。
我目前有这个代码:数据需要;设置有;数组 meds[30] med1-med30; 如果 meds[i] in ('06925' '06920') 然后做;青霉素=1;口服抗生素=1;结尾; else if meds[i] in ('03197') then do; 新孢菌素=1;局部抗生素=1;结尾; ....(更多的循环和更多的药物)运行;
问题是这段代码创建了一个指示变量而不是 30,覆盖了以前的信息。
我认为我真的需要 30 个指标变量,表明这 30 种药物中的每一种是口服抗生素还是外用抗生素,在我编写代码之前,如果任何药物是口服抗生素,患者接受口服抗生素。
我是宏的新手,非常感谢帮助。
data current;
input med1 med2 med3;
cards;
'06925' '06920' '03197' ;
run;
我想要这个:
data want;
input med1 topical_antibiotic1 oral_antibiotic1 med2 topical_antibiotic2 oral_antibiotic2 med3 topical_antibiotic3 oral_antibiotic3;
cards;
'06925' 0 1 '06920' 0 1 '03197' 1 0
;
run;
解决方案
我同意每个药物组可能只需要一个指标变量(感兴趣的药物)。似乎您只想知道每个主题,“他们有吗?” 此示例翻转 IN 运算符的参数。如果您提供更多示例数据,我可以在此示例中做得更好。
data current;
infile cards missover;
array med[3] $5;
input med[*];
oral_antibotic = '069' in: med; /*Assume oral all start with '069'*/;
topical_antibotic = '03197' in med;
cards;
06925 06920 03197
06925
;;;;
run;
推荐阅读
- bash - 如何使用 lynx 解析 http://www.worldometers.info/pt/ 网站中的数据?
- javascript - 检查表与 JavaScript 和 jQuery 的重叠
- sql - 我想在其他列所需条件的基础上插入 Ranks 列的值
- c# - 连接额外显示器时 Winform 窗口显示和行为变化
- symfony - Symfony Doctrine 事务循环问题
- java - 如何设置json响应数组中的值
- node.js - Ubuntu 服务器上的 Rscript 和 Nodejs 集成
- c - 递归算法计算小于给定值的节点
- azure - 无法查看在 Azure Notebooks 中创建的文件
- android - 从文件加载时格式错误的 Json