变量比较多
v1 mean_v1 v2 mean_v2 v3 mean_v3 v4.................
a 5.6 b 7.3 c 4.8 d
变成
v mean_v
a 5.6
b 7.3
c 4.8
d
......
有什么简单的方法吗?
谢谢

|
楼主: funnyxuke
|
1897
7
[原创博文] 问一个sas数据处理问题 |
|
本科生 18%
-
|
回帖推荐Here is an example to use arrays.
data tmp;
v1='a';
mean_v1=5.6;
v2='b';
mean_v2=7.3;
v3='c';
mean_v3 =4.8;
fmtname='mapv.';
run;
data tmp2;
length vname $2;
set tmp;
array mean(*) mean_v1 mean_v2 mean_v3;
array v(*) v1 v2 v3;
do i = 1 to dim(mean);
vname=v(i);
mean_v=mean(i);
output;
end;
keep vname mean_v;
run;
proc print;ru ...
只要是字符数字交错出现就可以,具体变量有多少个,名字是什么无所谓
data a;
input v1$ sdsd yy2$ mv2 vkkkk3$ ooea @@;
cards;
a 5.6 b 7.3 c 4.8
;
run;
proc transpose data=a out=final;var _all_;run;
data final;
set final;
if mod(_n_,2)=1 then v=col1;v=lag(v);
if mod(_n_,2)=0 then mean_v=col1;
if v=mean_v=' ' then delete;
keep v mean_v;
run;
data a;
input v1$ mean_v1 v2$ mean_v2 v3$ mean_v3 @@;
cards;
a 5.6 b 7.3 c 4.8
;
run;
proc transpose data=a out=b;
var _all_;
run;
proc sort data=b;
by _name_;
run;
data b;
set b;
col2=lag3(col1);
drop _name_ ;
rename col1=v col2=mean_v ;
label col1="v" col2="mean_v";
if _n_>=4;
run;
本帖被以下文库推荐
| ||
|
|
| ||
| ||
|
|
||
| ||
|
Let them be hard, but never unjust
|
||
| ||
加好友,备注cda京ICP备16021002号-2 京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明


