c**********5 发帖数: 653 | 1 我第一次碰到这个问题,愁死我了。
大家有碰到这个的吗?
id m1 m2 m4 m5 m6 m7 m8 m11 m3 m9 m10 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10
m11
1 1 1 1 1 1 1 1 1 . . . 1 2 8 3 4 5 6 7 8 8
8
我想要的结果是:
id m1 m2 M3 m4 m5 m6 m7 m8 m9 m10 M11 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10
m11
1 1 1 . 1 1 1 1 1 . . 1 1 2 2 3 4 5 6 7 7 7
8
我的code:
%macro lp(data,var,var2,num);
proc sort data=&data;by id mon;run;
proc means data=&data n;
var &var;
by id mon;
where &var=1;
output out=& |
c**********5 发帖数: 653 | |
c**********5 发帖数: 653 | |
D******n 发帖数: 2836 | 4 猜谜语吗?
就不能描述一下你要什么吗?
fts
以前有人光说没例子,现在有人光有例子又不做解释。
我第一次碰到这个问题,愁死我了。
大家有碰到这个的吗?
id m1 m2 m4 m5 m6 m7 m8 m11 m3 m9 m10 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10
m11
1 1 1 1 1 1 1 1 1 . . . 1 2 8 3 4 5 6 7 8 8
8
我想要的结果是:
id m1 m2 M3 m4 m5 m6 m7 m8 m9 m10 M11 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10
m11
1 1 1 . 1 1 1 1 1 . . 1 1 2 2 3 4 5 6 7 7 7
8
我的code:
%macro lp(data,var,var2,num);
proc sort data=&data;by id mon;run;
proc means data=&data n
【在 c**********5 的大作中提到】 : 我第一次碰到这个问题,愁死我了。 : 大家有碰到这个的吗? : id m1 m2 m4 m5 m6 m7 m8 m11 m3 m9 m10 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10 : m11 : 1 1 1 1 1 1 1 1 1 . . . 1 2 8 3 4 5 6 7 8 8 : 8 : 我想要的结果是: : id m1 m2 M3 m4 m5 m6 m7 m8 m9 m10 M11 mc1 mc2 mc3 m4 m5 m6 m7 m8 m9 m10 : m11 : 1 1 1 . 1 1 1 1 1 . . 1 1 2 2 3 4 5 6 7 7 7
|
c**********5 发帖数: 653 | 5 对不起,不会发帖,错位啦。
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12(我想要的顺序)
1 1 . 1 1 1 1 1 1 . . 1
然后,cumulative value
Mc1 Mc2 Mc3 Mc4 Mc5 Mc6 Mc7 Mc8 Mc9 Mc10 Mc11 Mc12(我想要的顺序)
1 2 2 3 4 5 6 7 8 8 8 9
SAS 的结果
M1 M2 M4 M5 M6 M7 M8 M9 M12 M3 M10 M11 (sas Ooutput1)
1 1 1 1 1 1 1 1 1 . . .
然后,cumulative value
Mc1 Mc2 Mc3 Mc4 Mc5 Mc6 Mc7 Mc8 Mc9 Mc10 Mc11 Mc12(sas Ooutput2)
1 2 9 3 4 5 6 7 8 9 9 9 |
c**********5 发帖数: 653 | 6 我想要的结果就是能够依次相加,不要跳过missing value。
我也尝试了在中间用array 赋值,让missingvalue=0,但是还是不行 |
b******e 发帖数: 539 | 7 你的sum function里多了一个 ’-‘
你的是:mc&i=sum(of mon1--mon&i);
应该是:mc&i=sum(of mon1-mon&i); |
o****o 发帖数: 8077 | 8 a hint: use vname() and vvalue() functions to an array of
array _x{*} m1-m12 mc1-mc12;
you should be able to do it in one step
【在 c**********5 的大作中提到】 : 对不起,不会发帖,错位啦。 : M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12(我想要的顺序) : 1 1 . 1 1 1 1 1 1 . . 1 : 然后,cumulative value : Mc1 Mc2 Mc3 Mc4 Mc5 Mc6 Mc7 Mc8 Mc9 Mc10 Mc11 Mc12(我想要的顺序) : 1 2 2 3 4 5 6 7 8 8 8 9 : SAS 的结果 : M1 M2 M4 M5 M6 M7 M8 M9 M12 M3 M10 M11 (sas Ooutput1) : 1 1 1 1 1 1 1 1 1 . . . : 然后,cumulative value
|
c**********5 发帖数: 653 | 9 谢谢各位。
mc&i=sum(of mon1-mon&i);and mc&i=sum(of mon1--mon&i);
两个都能工作。
array 不能解决我的实质问题。(array 和do loop 是一样功能,我在array
里面用 mc【i】=sum(of mc1-mc[i]) 不work。
请仔细看例子。如何解决依次相加并不跳过 missing value 的问题。
sas 是将missingvalue 放到最后加的 |
D******n 发帖数: 2836 | 10 I still dont get it.....why so hard to make it clear....fts
【在 c**********5 的大作中提到】 : 谢谢各位。 : mc&i=sum(of mon1-mon&i);and mc&i=sum(of mon1--mon&i); : 两个都能工作。 : array 不能解决我的实质问题。(array 和do loop 是一样功能,我在array : 里面用 mc【i】=sum(of mc1-mc[i]) 不work。 : 请仔细看例子。如何解决依次相加并不跳过 missing value 的问题。 : sas 是将missingvalue 放到最后加的
|
b******e 发帖数: 539 | 11 这两个是不一样的!你应该试过后再说。
【在 c**********5 的大作中提到】 : 谢谢各位。 : mc&i=sum(of mon1-mon&i);and mc&i=sum(of mon1--mon&i); : 两个都能工作。 : array 不能解决我的实质问题。(array 和do loop 是一样功能,我在array : 里面用 mc【i】=sum(of mc1-mc[i]) 不work。 : 请仔细看例子。如何解决依次相加并不跳过 missing value 的问题。 : sas 是将missingvalue 放到最后加的
|
c**********5 发帖数: 653 | 12 解决了。谢谢各位热心帮助。
%macro lp(data,var,var2,num);
data &data;set &data;if &var=. then &var=0;run;
proc sort data=&data;by id mon;run;
proc means data=&data n;
var &var;
by id mon;
where &var=1;
output out=&data._att_con n=&var2;
run;
proc sort data=&data._att_con;by id mon;run;
proc transpose data=&data._att_con out=&data._att_con_n (drop=_name_ _label_
) prefix=mon;
by id; ;
id mon;
var &var2;
run;
data &data._att_con_n;
set &data._att_con_n;
array mt{*} mon1-mon12;
do i=1 to dim(mt);
if mt{i}=. th |