SAS读取包含多个分隔符的数据

时间:2012-05-22 13:08:44

标签: sas

26/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~16;
28/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~6;
29/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~1;
23/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~4;
25/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~9;
27/03/2012~19:45:58~1~1636~00000000000000000000~41.45~17~880;

我要阅读这些数据。虽然分隔符很明显是“〜”,但由于“;”而我读到观察的最后一栏时遇到了问题。

我怎样才能让SAS读取16,6,1,4,9,880而不是“;” ? 感谢

2 个答案:

答案 0 :(得分:6)

只需指定';'在分隔符语句中,以及'〜'

data test;
infile "/path/to/file" delimiter='~;';
input var1 $ var2 $ var3-var7 var8;
run;

答案 1 :(得分:2)

你可以阅读';'然后使用compress函数将其删除:

a=compress(b,";");

你可能想要一个数字:

a=input(compress(b,";"),best.);

如果我这样做,我可以使用 INFILE 变量和SCAN函数:

data mydata;
  infile "/path/to/my/file";
  input;
  rogue_var=scan(_infile_,-1,"~;");
  rogue_var_num=input(scan(_infile_,-1,"~;"),best.);
run;

请注意,“-1”作为SCAN函数的第二个参数意味着我们从行尾开始第一个单词。