首页 > 解决方案 > 如何在SAS中将字符变量拆分为多个变量?

问题描述

我想将以下字符变量(有)拆分为多个变量(时间、车道和方向)。

data outdata;
input have & $20.;
datalines;
00:00 Lane 1 (North)
Lane 2 (North)
Lane 3 (South)
Lane 4 (East)
All Lanes
01:00 Lane 1 (North)
;
run;

在此处输入图像描述

我得到了除 Lane 变量之外的所有变量。

data up; 
set outdata; 
Hour=scan(Have, 1); 
Hour=compress(hour,'','a'); 
Lane = scan(Have, 2); 
Direction =scan(Have, -1); 
Direction = tranwrd(Direction, "Lanes", " "); 
run;

标签: sas

解决方案


您可以使用条件保持input( @) 来读取和保留该time值。需要其他input语句功能,例如调整的分隔符列表 ( dlm=) 来读取laneanddirection值。

例子:

data outdata;
  attrib 
    time format=time5.
    lane length=$10
    direction length=$5
  ;

  retain time;

  input @;
  if index(_infile_,':') then input time time5. @;

  input lane direction;

  infile datalines dlm='()' missover;
datalines;
00:00 Lane 1 (North)
Lane 2 (North)
Lane 3 (South)
Lane 4 (East)
All Lanes
01:00 Lane 1 (North)
;

在此处输入图像描述


推荐阅读