m********l 发帖数: 791 | 1 一组records(有相同的id),var是每个record都共有的一个变量,如果这组records
当中有一个record的var = 1, 那就把这组record的所有var都赋值1.
怎么实现。。
谢谢 |
k*******a 发帖数: 772 | 2 不知道是不是这个意思? 我新建了个变量 var_new, 不过可以把 var_new覆盖掉原来
的var 就可以了
data test;
input id var;
datalines;
1 0
1 0
1 1
2 0
2 0
3 1
3 0
;run;
proc sql;
create table test1 as
select a.*,
case when (sum(var=1)>0) then 1 else var end as var_new
from test a
group by id;
quit;
records
【在 m********l 的大作中提到】 : 一组records(有相同的id),var是每个record都共有的一个变量,如果这组records : 当中有一个record的var = 1, 那就把这组record的所有var都赋值1. : 怎么实现。。 : 谢谢
|
k***n 发帖数: 997 | 3 用python,matlab等好做
在sas里把这个dataset 按var 排序,如果有1就把var都赋成1,不行吗?
records
【在 m********l 的大作中提到】 : 一组records(有相同的id),var是每个record都共有的一个变量,如果这组records : 当中有一个record的var = 1, 那就把这组record的所有var都赋值1. : 怎么实现。。 : 谢谢
|
m********l 发帖数: 791 | 4 多谢您的答复 你理解的没有错。
我不用proc sql做了一下, 也能够实现我想要的
data test;
input id var;
datalines;
1 0
1 0
1 1
2 0
2 0
3 1
3 0
;run;
proc sort data=test;
by id descending var;
run;
data test1;
set test;
by id;
if first.id = 1;
run;
data test2;
set test;
drop var;
run;
data test3;
merge test2 test1;
by id;
run;
PS:我的var变量是binary的,我用了proc sort和first.id以及merge来实现
【在 k*******a 的大作中提到】 : 不知道是不是这个意思? 我新建了个变量 var_new, 不过可以把 var_new覆盖掉原来 : 的var 就可以了 : data test; : input id var; : datalines; : 1 0 : 1 0 : 1 1 : 2 0 : 2 0
|
m********l 发帖数: 791 | 5 没有说的那么简单,需要用到merge 或是 retain什么的
因为SAS 和python / matlab什么的不一样 它是一行一行扫数据的
【在 k***n 的大作中提到】 : 用python,matlab等好做 : 在sas里把这个dataset 按var 排序,如果有1就把var都赋成1,不行吗? : : records
|