【发布时间】:2014-03-05 00:06:54
【问题描述】:
我有一个如下所示的数据文件:
001 Mayo Clinic 120 78 7 15
Patient has had a persistent cough for 3 weeks
023 Mayo Clinic 157 72 10 2
Patient complained of ear ache
064 HMC 201 59 . .
Patient left against medical advice
003 HMC 166 58 8 15
Patient placed on beta-blockers on 7/1/2006
我发现将其读入 SAS 的任务基本上是不可能的。不,在这种情况下,重新格式化数据文件是不可能的。所以让我解释一下你在这里看到的内容:
每个主题都有两行数据。第一行是-
受试者编号/诊所/wt/hr/dx/sx (不要担心数字是什么意思,这无关紧要)。
第二行是文本,它基本上是一个包含额外信息的注释,涉及到其数据在前一行中列出的主题。所以,这些行:
001 Mayo Clinic 120 78 7 15
Patient has had a persistent cough for 3 weeks
适用于单一主题。主题 001。这些需要成为 SAS 数据集中的单行。我完全不知所措;由于诊所名称的长度不同,并且数字列未对齐,我无法弄清楚如何让 SAS 读取它。这是我能得到的最接近的:
data ClinData;
infile "&wdir.clinic_data.txt";
retain patno clinic weight hr dx sx exinfo;
input patno clinic $1. @;
if clinic='M' then
input patno @5 clinic $11. weight hr dx sx / @1 exinfo $30.;
else if clinic='H' then
input patno @5 clinic $3. weight hr dx sx / @1 exinfo $30.;
run;
这打印为:
http://i61.tinypic.com/2uswl90.png
所有数值都在正确的位置。
但是,这有几个问题。
首先,主题编号 ('patno') 始终显示为缺失值。为什么?
其次,诊所仅由其第一个字母“M”或“H”表示。我无法让 SAS 根据它所在的诊所来更改诊所变量的长度。
第三,变量“exinfo”包含有关患者的注释。但是,我无法让 SAS 包含整条生产线。在格式化失控之前,我能得到的最高值是大约 30 个字符。
有什么帮助吗?对于这种类型的输入,SAS 文档非常糟糕。这些示例都没有真正符合我的需要,并且没有充分解释如何使用某些选项。我知道我需要使用列/行指针;但问题是各行的列不一致。所以无论我使用哪种指针格式,仍然会有不正确的行。
【问题讨论】:
标签: sas