我正在处理来自FDA的数据集,其中包含有关药物反应的数据。我试图通过药物名称对数据进行分组。我有一个外部文本文件,其中包含我感兴趣的药物名称。我想创建一个由我感兴趣的药物组成的数据子集。我的外部文本文件名为SSRIFULL.txt,变量名称为DRUGNAME。我尝试了许多明显错误的事情
即
DATA SSRIFULL2;
---- SET SSRIFULL;
----如果Drugname〜=“P:\ APPRENTICESHIP \ SSRI_LIST.txt”则删除;
运行;
我直接找不到任何有关此事的文献。我应该更多地了解truncover或proc sql上的主题吗?该文本文件包含约20种药物的列表。我也对某些类型的内联代码持开放态度,但由于某些原因,SAS不喜欢这个......
DATA SSRIFULL2;
--- SET SSRIFULL;
------ IF(年龄> 19)或(年龄=。)然后删除;
------如果(DRUGNAME~ ='氯米帕明'或'氟伏沙明'或'帕罗西汀'或'帕罗西汀'或 '百忧解'
------或'氟西汀'或'Seroquel'或'Wellbutrin'或'安非他酮'或'左洛夫'或'舍曲林'
------或'Zyban')然后删除;
RUN;
可能很明显,我对SAS没有很多经验我只是想让这个数据集在此时用于分析。 感谢您提前提供任何帮助
答案 0 :(得分:2)
您应该参考SAS文档以了解必要的语法。你的第二次尝试非常接近,但这是正确的:
DATA SSRIFULL2;
SET SSRIFULL;
IF (AGE >19) OR (AGE = .) Then Delete;
If DRUGNAME in ('clomipramine' 'fluvoxamine' 'Paxil' 'paroxetine' 'Prozac' 'fluoxetine' 'Seroquel' 'Wellbutrin' 'bupropion' 'Zoloft' 'sertraline' 'Zyban') then delete;
RUN;
请注意,存储在变量drugname
中的名称将区分大小写,因此,如果该变量为“paxil”,并且您尝试匹配“Paxil”,则无效。您可以使用lowcase
函数来处理此问题。
要实现类似于您的第一次尝试,您必须将文件读入SAS数据集,然后使用它在第二步中进行匹配:
data ssri_list;
length drugname $50.;
infile 'P:\APPRENTICESHIP\SSRI_LIST.txt';
input drugname$;
run;
proc sql;
create table ssrifull2 as
select * from ssrifull where 0<=age<19 and drugname not in
(select drugname from ssri_list);
quit;
或类似的东西。