Sas 从SVG路径语法中提取坐标

Sas 从SVG路径语法中提取坐标,sas,cell,separator,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比较陌生……我认为这些是笛卡尔坐标) 我该怎么做呢?使用scan功

*标题可能具有误导性

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

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比较陌生……我认为这些是笛卡尔坐标)


我该怎么做呢?

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

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;

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

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;

您有一个名为d的变量的SAS数据集,还是有一个文本文件?我第一次读到的是,您已经有了一个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;

您有一个名为d的变量的SAS数据集,还是有一个文本文件?我第一次读到的是,您已经有了一个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;

也许更好的标题是“从SVG路径语法提取坐标”。在SVG的上下文中,每个
d
值描述一行
M
将指针移动到第一个位置,并且
L
定义从第一个位置到第二个位置的行。由于命令大写,坐标是绝对坐标而不是相对坐标。如果您感兴趣,您可以阅读更多或更多。感谢SRSwift-标题已按建议更改。也许更好的标题是“从SVG路径语法提取坐标”。在SVG的上下文中,每个
d
值描述一行
M
将指针移动到第一个位置,并且
L
定义从第一个位置到第二个位置的行。由于命令大写,坐标是绝对坐标而不是相对坐标。如果您感兴趣,您可以阅读更多或更多。谢谢SRSwift-标题已按建议更改。