1
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 而不是“;” ? 谢谢

4

2 回答 2

6

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

data test;
infile "/path/to/file" delimiter='~;';
input var1 $ var2 $ var3-var7 var8;
run;
于 2012-05-22T14:16:56.410 回答
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 函数的第二个参数意味着我们从行尾获取第一个单词。

于 2012-05-22T14:03:09.017 回答