全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2435 9
2012-04-21
第一次编到这种程序彻底傻眼。
求前辈指教!不胜感激。
选取dataset的一部分
mainID        ID1        ID2        ID3        ID4
1000        1017        1027        1021        1010
1000        2109        2013        1001        1002     
1000        1013        1021        1051        1799
1000        1280        1278        1369        1928
1000        7832        2178        1279        1276
1001        1928        1932        1652        3827
1001        1927        1587        8172        9172
1001        1979        9731        9179        7382       
1001        1972        8723        7632        8372
1001        2981        9128        9217        3917
1002        1292        9132        7382        8328
1002        9170        9312        7398        9371       
1002        9372        7483        8327        4928
1002        8362        9837        7436        8327
1002        3091        3028        3108        3208


大概 总共是9千个ID,从1000到9999。每一行表示mainID和 ID1 ID2 ID3 ID4合作过。要计算的是每一行中的mainID分别和 ID1 ID2 ID3 ID4在整个dataset中的合作次数tie1 tie2 tie3 tie4。

例如对第一行,要求的tie1就是mainID 1000和ID1 1017两者在整个dataset中出现于同一行的次数,记为tie1。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-21 23:09:01
It is pretty difficult!!!
二维码

扫码加我 拉你入群

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

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

2012-4-22 13:38:48
weitingkoala 发表于 2012-4-21 23:09
It is pretty difficult!!!
我已经被逼疯了T.T老板周四要revised dataset.....
二维码

扫码加我 拉你入群

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

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

2012-4-22 15:37:16
不知道对不对,希望对你有所帮助
data work.a;
        input mainid $ id1 $ id2 $ id3 $ id4 $;
        datalines;
1000        1017        1027        1021        1010
1000        2109        2013        1001        1002
1000        1013        1021        1051        1799
1000        1280        1278        1369        1928
1000        7832        2178        1279        1276
1001        1928        1932        1652        3827
1001        1927        1587        8172        9172
1001        1979        9731        9179        7382
1001        1972        8723        7632        8372
1001        2981        9128        9217        3917
1000        1017        1028        1021        1010
1002        1292        9132        7382        8328
1002        9170        9312        7398        9371
1002        9372        7483        8327        4928
1002        8362        9837        7436        8327
1002        3091        3028        3108        3208
;
run;



proc sql noprint;
        create table work.b as
                select *,count(mainid) as tie1
                from work.a
                group by mainid,id1;
/*                order by mainid,id1;*/

        create table work.c as
                select *,count(mainid) as tie2
                from work.a
                group by mainid,id2;
/*                order by mainid,id2;*/

        create table work.d as
                select *,count(mainid) as tie3
                from work.a
                group by mainid,id3;
/*                order by mainid,id3;*/

        create table work.e as
                select *,count(mainid) as tie4
                from work.a
                group by mainid,id4;
/*                order by mainid,id4;*/
quit;

data work.f;
        merge work.b work.c work.d work.e;
run;
二维码

扫码加我 拉你入群

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

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

2012-4-23 15:50:48
chendonghui1987 发表于 2012-4-22 15:37
不知道对不对,希望对你有所帮助
data work.a;
        input mainid $ id1 $ id2 $ id3 $ id4 $;
太感谢楼上了,非常好用~SQL果断很强大啊!真心感谢您的帮助。
二维码

扫码加我 拉你入群

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

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

2012-4-23 16:39:13
最后那个merge好像还需要加个by,具体的你去查一下资料吧,要不然他们合并的时候好像会有点问题
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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