SAS中文论坛

标题: 如何根据数据集aaa中变量的顺序 对var进行排序 [打印本页]

作者: shiyiming    时间: 2009-4-11 09:53
标题: 如何根据数据集aaa中变量的顺序 对var进行排序
data aaa;
input id a b c;
cards;
1 1 2 3
2 2 3 4
3 4 5 6
;
run;

data bbb;
input id var$ value;
cards;
1 b 1
1 a 1
1 c 3
2 c 1
2 a 2
;
run;

/*如何根据数据集aaa中变量的顺序 对var进行排序*/
want:
id var value
1 a 1
1 b 1
1 c 3
2 a 2
2 c 1
作者: shiyiming    时间: 2009-4-11 10:32
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
SAS新人 请多指教
*****************************************
proc sort data=bbb;
by id;
run;

proc sort data=aaa;
by id;
run;

data test;
merge bbb(in=ina) aaa;
by id;
if var='a' then sort=a;
else if var='b' then sort=b;
else if var='c' then sort=c;
if ina;
drop a b c;
run;

proc sort data=test;
by id sort;
run;
作者: shiyiming    时间: 2009-4-11 13:21
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
你的,是要这个吗?

data aaa;
input id a b c;
cards;
1 1 2 3
2 2 3 4
3 4 5 6
;
run;
proc transpose data=aaa out=bbb(rename=(_NAME_=var COL1=value));
var a b c;
by  id;
run;
作者: shiyiming    时间: 2009-4-11 13:53
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
不是 目的是如何根据数据集aaa中变量的顺序 对数据集bbb中var的值进行排序 最好程序能通用化
作者: shiyiming    时间: 2009-4-11 18:45
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
data bbb(keep=id var value s);
set bbb;
a=1; b=2; c=3;
s= vvaluex(var);
run;
proc sort data=bbb out=ccc;
by id s;
run;

ps:题目意思完全靠猜。
作者: shiyiming    时间: 2009-4-11 19:08
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
data aaa;
input id a b c d;
cards;
1 9 10 11
2 22 34 15
;
run;
数据集aaa中变量的顺序是 id a b c
先对数据集中id进行排序,然后根据id a b c这个顺序对数据集bbb中var的变量值进行排序
data bbb;
input id var$ value;
cards;
1 b 1
1 a 1
1 c 3
2 c 1
2 a 2
;
run;

want:
id var value
1 a 1
1 b 1
1 c 3
2 a 2
2 c 1
作者: shiyiming    时间: 2009-4-11 19:10
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
谢谢 变量很多时 写a=1; b=2; c=3;会很多!
作者: shiyiming    时间: 2009-4-11 20:54
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
有几个变量?
作者: shiyiming    时间: 2009-4-11 20:55
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
[code:l50yucw5]data aaa;
input id a b c;
cards;
1 1 2 3
2 2 3 4
3 4 5 6
;
run;

data bbb;
input id var$ value;
cards;
1 b 1
1 a 1
1 c 3
2 c 1
2 a 2
;
run;

data ccc(keep=id v ord);
  set aaa;
  array arr a b c;
  do over arr;
  v=vname(arr);
  ord=arr;
  output;
  end;
run;



proc sql;
  create table ddd(drop=ord) as
  select bbb.id, var, value,ord
  from bbb left join ccc
    on bbb.id=ccc.id and bbb.var=ccc.v
  order by id, ord
  ;[/code:l50yucw5]
作者: shiyiming    时间: 2009-4-11 21:45
标题: Re: 如何根据数据集aaa中变量的顺序 对var进行排序
macro




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2