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

SAS正在读取包含多个分隔符的数据,sas,Sas,我有这些数据要读。虽然很明显分隔符是~,但我在读取观察结果的最后一列时遇到了一个问题,因为 如何让SAS阅读16、6、1、4、9、880而不是? 谢谢您可以在“;”中阅读然后使用压缩功能将其取出: 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~000

我有这些数据要读。虽然很明显分隔符是~,但我在读取观察结果的最后一列时遇到了一个问题,因为

如何让SAS阅读16、6、1、4、9、880而不是?
谢谢

您可以在“;”中阅读然后使用压缩功能将其取出:

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;
a=input(compress(b,";"),best.);
您可能需要一个数字:

a=compress(b,";");
如果我这样做,我可能会使用infle变量和SCAN函数:

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;
a=input(compress(b,";"),best.);

请注意,-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;
a=input(compress(b,";"),best.);
您可能需要一个数字:

a=compress(b,";");
如果我这样做,我可能会使用infle变量和SCAN函数:

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;
a=input(compress(b,";"),best.);

请注意,-1作为扫描函数的第二个参数意味着我们从行的末尾获取第一个单词。

只需指定“;”在分隔符语句中,与“~”一起

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

只需指定“;”在分隔符语句中,与“~”一起

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

太棒了。谢谢你,Robbie,这是一个很好的解决方案。我从来没有在文档中看到过这一点。太棒了。谢谢你,Robbie,这是一个很好的解决方案。我从未在文档中看到过这一点。