我的数据如下
id ^ number ^ obs
123 ^ 2 ^ a~b
124 ^ 3 ^ c~d~e
125 ^ 4 ^ f~g~h~i
第一个数字是唯一的id,第二个数字是id的观察数量,其余部分是观察值。
对于第一行,唯一ID是123,它有2个观察值:它们是a和b
我想将数据读入SAS作为
身份证号码
123 2 a
123 2 b
124 3 c
124 3 d
124 3 e
125 4 f
125 4 g
125 4 h
125 4 i
我的问题是如何在SAS中做到这一点?
非常感谢!
答案 0 :(得分:3)
我假设这是一个关于从平面文件中读取数据并将其存储在SAS数据集中的问题。以下代码将为您执行此操作:
/* Insert filename */ filename myfile ""; /* This writes out a dataset called mydataset from the flat-file */ data mydataset; infile myfile dlm='^' dsd firstobs=2; input id number _obs $; _i=1; do until (scan(_obs,_i,'~') = ''); obs=scan(_obs,_i,'~'); _i+1; drop _:; /* Remove this line to see all variables in final dataset */ output; end; run;
<强>解释强>
数据步骤从平面文件读取记录,但在输出到数据集之前,它使用扫描功能将“隐藏”变量分隔为“&#39;〜”,为每个输出单独的观察值。
如评论中所述,您可以删除drop语句以进一步了解代码的工作方式。