全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8575 8
2016-03-18
求各位大神路过,帮忙解决,我想把图1的数据变成图2,即只要a1中有等于1的,后面的a2-a4均为0,由于我的数据中共有一百多个像a1,a2这样的观测,所以,用手一个一个把所有的a变量都写出来,太麻烦了,希望能用简单的方法来解决,谢谢各位 1.png 2.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-18 10:39:04
if a1=1 then do; a2=0;a3=0;a4=0;end;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-18 10:42:56
孤单的我们 发表于 2016-3-18 10:39
if a1=1 then do; a2=0;a3=0;a4=0;end;
谢谢您,可是我需要处理的a变量,有一百多个,如果全是这么写,我要累死的,不知道您还知不知道其他更高效的方法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-18 10:45:24
array num_a a2-a100;
do i=2 to dim(num_a);
if a1=1 then a{i}=0;
end;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-18 10:47:04
可以用数组做。

data test;
        input a1 a2 a3 a4;
        cards;
        1 0 1 1
        0 1 1 1
        0 1 1 0
        1 0 0 1
        ;
run;
data result;
        set test;
        array a[4] a1-a4;
        if a[1]=1 then do i=2 to 4;
        a[i]=0;
        end;
        drop i;
run;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-18 10:58:30
孤单的我们 发表于 2016-3-18 10:45
array num_a a2-a100;
do i=2 to dim(num_a);
if a1=1 then a{i}=0;
大神,谢谢您的回答,但是我的数据中存在这样的情况(如下图中id=2的观测)它的a1为0,但a2和a5为1,我想把a2之后的所有变量都变为0,所以用您刚刚这个程序就无法实现了
图3
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群