列SAS上的字符串操作

时间:2013-07-15 20:08:43

标签: string sas

我在表格中有一个“变量”列。此列基本上用字符串提交,如下所示。现在我想打破这些字符串,并根据“空格”的“分隔符”创建一个列。

Rejct  2.00  Accept  4.00

Reject 3.00  Accept  9.00

Reject -4.00 Accept -6.00

现在,如果我想创建拒绝接受等变量,那么该怎么办呢。

Reject  Accept

2.00    4.00

3.00    9.00

-4.00  -6.00

1 个答案:

答案 0 :(得分:1)

Infile Magic拯救。

data have;
infile datalines truncover;
input @1 string $30.;
datalines;
Reject 2.00  Accept  4.00
Reject 3.00  Accept  9.00
Reject -4.00 Accept -6.00
;;;;
run;

filename a temp;
data _null_;
file a;
put "1";
run;

data want;
set have;
infile a truncover;
input @1 @@;
_infile_=string;
input
@"Reject" reject BEST5.
@"Accept" accept BEST5.
@@
;
datalines;
run;

基本上,你创建一个虚拟文件;然后你使用输入@“string”的力量来搜索你的数据。

您也可以使用SUBSTR和/或SCAN来完成此操作。 IE:

data want;
set have;
reject = input(scan(string,2,' '),best.);
accept = input(scan(String,4,' '),best.);
run;

但是,如果位置不固定,使用@“string”的infile magic会更灵活。