我已將每個用戶和項目(對於推薦系統)的輸出組合到所有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