楼主: 3314736600
3213 3

关于SAS 数据集生成矩阵及计算的问题,版本是SAS9.4 [推广有奖]

  • 1关注
  • 0粉丝

初中生

33%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
131 点
帖子
10
精华
0
在线时间
12 小时
注册时间
2016-6-21
最后登录
2016-7-27

楼主
3314736600 发表于 2016-6-21 17:21:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
数据集如图,有两个问题: QQ截图20150103154757.png ①想把数据集转化成矩阵,rowname为userid,colname为movieid,然后对应的矩阵值为wrating。
②之后要做一个算法,就是要将wrating这一项中,movieid相同但是userid不一样的数据进行两两相乘,例如movieID为1的用户总共有四个,那么第一个用户的wrating要分别乘上另外三个用户的wrating并做加和。求应该怎么做?跪求大神帮忙啊


二维码

扫码加我 拉你入群

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

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

关键词:SAS9 数据集 RATING UserID Movie SAS 用户 SAS SAS数据分析方法

回帖推荐

麦弥 发表于2楼  查看完整内容

先把矩阵的贴出来: data rating; input userid movieid wrating; datalines; 373 597 1.25 373 593 1.60 373 588 1.07 373 558 0.53 373 555 1.07 373 543 0.89 372 597 1.59 371 597 0.59 371 558 2.56 ; run; proc sort data=rating; by userid ; run; proc transpose data=rating out=rating1; by userid; id movieid; var wrating; run; 第二个问题,你是要计算转置之后的每一列的元素两两相乘 ...

沙发
麦弥 发表于 2016-6-21 18:12:20
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
datalines;
373 597 1.25
373 593 1.60
373 588 1.07
373 558 0.53
373 555 1.07
373 543 0.89
372 597 1.59
371 597 0.59
371 558 2.56
;
run;

proc sort data=rating;
        by userid ;
run;
proc transpose data=rating out=rating1;
        by userid;
        id movieid;
        var wrating;
run;
第二个问题,你是要计算转置之后的每一列的元素两两相乘再求和么,那对于每个userid的值都是一样的?

藤椅
3314736600 发表于 2016-6-21 19:35:28
麦弥 发表于 2016-6-21 18:12
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
谢谢~第二个问题不是一样的,假设一个movieID有4个用户参与,那么
用户1的值就是wrating(1)*wrating(2)+wrating(1)*wrating(3)+wrating(1)*wrating(4).
用户2的值就是wrating(2)*wrating(1)+wrating(2)*wrating(3)+wrating(2)*wrating(4).
这样以此类推的

板凳
3314736600 发表于 2016-6-21 20:23:54
麦弥 发表于 2016-6-21 18:12
先把矩阵的贴出来:
data rating;
        input userid movieid wrating;
抱歉抱歉,我刚才对第二问的说明有误,如下述:
像有些数据是这样的:
  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
那么V(001,002)=1.2*1.0+0.8*0.9+0.6*1.2+1.3*1.1+1.2*0.9
是这样算的,类似于二部图算相似度时的评分相乘,然后因为userid的个数很多,假设有100个数据,那么001用户就得与剩余99个用户都进行一遍这样的计算,所以还存在一个循环问题。。。这里代码不是很清楚,主要不知道怎么定义矩阵中的每个值,还有怎么套用循环,让其可以计算(总用户-1)次,求助T^T


您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 18:39