全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3954 10
2016-06-21
数据是这样的:
  userid\movieid    500   501   502   503   504
   001                   1.2    0.8    0.6    1.3    1.2
   002                   1.0    0.9    1.2    1.1    0.9   003                   1.2    1.1    0.8    1.2    1.3
那么算出来V(001,002)=1.2*1.0+0.8*0.9+0.6*1.2+1.3*1.1+1.2*0.9
                 V (001,003)    =1.2*1.2+0.8*1.1+0.6*0.8+1.3*1.2+1.2*1.3
然后因为userid的个数比较多,所以还要涉及到循环,最终结果就是假设有100个用户,能使用户1与其他99个用户都进行一遍计算,得出99个结果。急求急求。

二维码

扫码加我 拉你入群

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

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

全部回复
2016-6-21 21:04:42
数据格式没对齐,是这样的
userid\movieid    500   501   502   503   504
   001                   1.2    0.8    0.6    1.3    1.2
   002                   1.0    0.9    1.2    1.1    0.9   
   003                   1.2    1.1    0.8    1.2    1.3
二维码

扫码加我 拉你入群

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

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

2016-6-22 09:51:34
复制代码
二维码

扫码加我 拉你入群

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

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

2016-6-22 14:56:09
孤单的我们 发表于 2016-6-22 09:51
有没有循环语句可以解决啊。。。因为总共的movieid有2000多个,userid有900个。。。不能一个个手敲啊。。。而且也不可能对每次计算都分成两个数据集额。。。
二维码

扫码加我 拉你入群

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

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

2016-6-22 15:25:13
3314736600 发表于 2016-6-22 14:56
有没有循环语句可以解决啊。。。因为总共的movieid有2000多个,userid有900个。。。不能一个个手敲啊。。 ...
data a;
input userid $ id500 id501 id502 id503 id504;
cards;
001 1.2 0.8 0.6 1.3 1.2
002 1.0 0.9 1.2 1.1 0.9
003 1.2 1.1 0.8 1.2 1.3
;
run;

data b;
        set a;
        array a id:;
        array b b1-b5;
        array c c1-c5;
        retain b:;
                do i=1 to dim(a);
                        if _n_=1 then b{i}=a{i};
                        c{i}=a{i}*b{i};
                end;
        if _n_>1 then sum=sum(of c:);        
        drop b: c: i;
run;
二维码

扫码加我 拉你入群

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

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

2016-6-22 15:55:42
孤单的我们 发表于 2016-6-22 15:25
data a;
input userid $ id500 id501 id502 id503 id504;
cards;
array a id:;这里是什么意思啊,我的表格形式如下: QQ截图20150104155349.png

应该怎么修改
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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