0

我正在使用来自 FDA 的数据集,其中包含对药物反应的数据。我正在尝试按药物名称对数据进行子集化。我有一个包含我感兴趣的药物名称的外部文本文件。我想创建一个包含我感兴趣的药物的数据子集。我的外部文本文件名为 SSRIFULL.txt,变量名为 DRUGNAME。我尝试了很多明显错误的事情

IE

数据 SSRIFULL2;

---- 设置 SSRIFULL;

---- 如果 Drugname ~= "P:\APPRENTICESHIP\SSRI_LIST.txt" 则删除;

跑;

我找不到任何关于这个问题的文献。我应该更多地研究关于 trunco​​ver 或 proc sql 的主题吗?文本文件包含约 20 种药物的列表。我也对某种类型的内联代码持开放态度,但出于某种原因,SAS 不喜欢这样......

数据 SSRIFULL2;

---设置SSRIFULL;

------IF (AGE >19) OR (AGE = .) 然后删除;

------If (DRUGNAME ~= 'clomipramine' OR 'fluvoxamine' or 'Paxil' or 'paroxetine' or 'Prozac'

------或“氟西汀”或“思瑞康”或“维布特林”或“安非他酮”或“左洛复”或“舍曲林”

------OR 'Zyban') 然后删除;

跑;

可能很明显,我对 SAS 没有太多经验,我只是想让这个数据集可用于此时的分析。感谢您提前提供任何帮助

4

1 回答 1

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;

或类似的东西。

于 2013-04-02T23:40:34.670 回答