我已将每个用户和项目(对于推荐系统)的输出组合到所有x全部R data.table中。对于此表中的每个行,我需要计算用户得分1,2,3 &项目得分1,2,3之间的相关性(例如,对于第一行,0.5,0.6,-0.2和0.2之间的相关性是什么,0.8,-0.3)以查看用户和项目匹配程度。data.table关联中的动态列名称
user item user_score_1 user_score_2 user_score_3 item_score_1 item_score_2 item_score_3
A 1 0.5 0.6 -0.2 0.2 0.8 -0.3
A 2 0.5 0.6 -0.2 0.4 0.1 -0.8
A 3 0.5 0.6 -0.2 -0.2 -0.4 -0.1
B 1 -0.6 -0.1 0.9 0.2 0.8 -0.3
B 2 -0.6 -0.1 0.9 0.4 0.1 -0.8
B 3 -0.6 -0.1 0.9 -0.2 -0.4 -0.1
我有一个可行的解决方案 - 这就是:
scoresDT[, cor(c(user_score_1,user_score_2,user_score_3), c(item_score_1,item_score_2,item_score_3)), by= .(user, item)]
...其中scoresDT是我data.table。
这是一切都很好,它的工作原理......但我不能让它与变量名称中的动态变量而不是硬编码一起工作。
通常在data.frame中,我可以创建一个列表并输入它,但由于它是字符格式,data.table不喜欢它。我试过使用“with = FALSE”的列表,并且在尝试data.table的基本子集时取得了一些成功,但与我所需的相关语法不同。 !
感谢, 安德鲁
看看'?melt'。 – Frank
我已经翻阅了?融化,并有可能在那里有用的东西,但我仍然无法获得正确的语法。我可以得到一个单一的逻辑工作,但相关性有两组变量,我不能找出在这种情况下,= = FALSE应该去哪里 – andrewjones54