SAS读取数据有2个分隔符

时间:2014-05-09 06:00:12

标签: sas

我的数据如下

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中做到这一点?

非常感谢!

1 个答案:

答案 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语句以进一步了解代码的工作方式。