*标题可能会产生误导
我有(列)单元格值如下:
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相对较新......我认为这些是笛卡尔坐标)
我将如何做到这一点?
答案 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;