1

textvar私は次のような変数を持っています:

type=1&name=bob
type=2&name=sue

次のような新しいテーブルを作成したいと思います。

type  name
1     bob
2     sue

私のアプローチはscan、変数を分割するために使用する&ことです。

var1      var2
type=1    name=bob

だから今、私は再びスキャンを使用して分割することができます=

vname = scan(var1, 1, '=');
value = scan(var1, 2, '=');

しかし、どうすればvalue名前の付いた変数に割り当てることができvnameますか?

4

3 に答える 3

3

PROC TRANPSOSE が最も速い方法です。ID 変数 (ダミーまたは実数) が必要です。

data test;
informat testvar $50.;
input testvar $;
datalines;
type=1&name=bob
type=2&name=sue
;;;;
run;

data test_vert;
set test;
id+1;
length scanner $20 vname vvalue $20;
scanner=scan(testvar,1,"&");
do _t=2 by 1 until (scanner=' ');   
    vname=scan(scanner,1,"=");
    vvalue=scan(scanner,2,"=");
    output;
    scanner=scan(testvar,_t,"&");
end;
run;

proc transpose data=test_vert out=test_T;
by id;
id vname;
var vvalue;
run;
于 2012-09-19T14:28:55.063 に答える
0

これは役に立ちますか?SASの動的変数名

これに対処するためのコードがあると思いますが、職場に残しました。

于 2012-09-19T14:04:47.457 に答える
0

明らかに、実際のデータは含まれていませんが、生データの形式が各行で同じである場合、一部の値をハードコーディングすることはできませんか? 私のコードでは、「=」と「&」を「,」に変換して、スキャン機能を使いやすくしています。

data want (keep=type name);
set test;
_newvar=translate(testvar,",,","&=");
    type=input(scan(_newvar,2),best12.);
    length name $20;
    name=scan(_newvar,4);
run;
于 2012-09-19T16:08:22.200 に答える