从SVG路径语法中提取坐标

时间:2015-03-06 03:20:46

标签: sas cell separator

*标题可能会产生误导

我有(列)单元格值如下:

d="M200,170L149,385"
d="M200,170L150,387" 
d="M200,170L275,384" 
d="M200,170L49,317" 
d="M200,170L92,347" 

值200&每个单元中的170分别代表x和y原点,而第二组值(即149和385)代表x和y值。 我想将x-orgin,y-orgin,x和y值分成四列。 (我对sas相对较新......我认为这些是笛卡尔坐标)

我将如何做到这一点?

2 个答案:

答案 0 :(得分:4)

使用scan功能。它用于选择字符串的第n个单词。第一个参数是您要解析的字符串,第二个是单词(第1个,第2个等),第三个参数列出您的分隔符(分隔单词的字符)。这应该是你所需要的一切。

data want;
  set have;
  origx = scan(d,1,'M,L');
  origy = scan(d,2,'M,L');
  x     = scan(d,3,'M,L');
  y     = scan(d,4,'M,L');
run;

答案 1 :(得分:2)

您是否有一个SAS数据集,其中包含一个名为d的变量,或者您是否有文本文件?我的第一个读物是你已经有了一个SAS数据集,在这种情况下你需要解析变量。您可以使用SCAN()函数或许多其他方法,例如:

data have;
  input d $16.;
  cards;
M200,170L149,385
M200,170L150,387 
M200,170L275,384 
M200,170L49,317 
M200,170L92,347 
;
run;

data want;
  set have;
  x_origin=scan(d,1,"M,L");
  y_origin=scan(d,2,"M,L");
  x=scan(d,3,"M,L");
  y=scan(d,4,"M,L");
run;

proc print data=want;
run;