r - R中的排序评分矩阵
问题描述
我制作的评分矩阵有很多 N/A 值(用户评分笑话矩阵)。我需要对矩阵进行排序,其中费率最高的用户位于矩阵的开头,而费率较低的用户位于矩阵的底部。我的代码:
csv_table=read.csv('Jester5k.csv', header = TRUE, sep = ",", quote = "\"",dec = ".")
Row_num=max(csv_table$user_id)
Num_Unique_usersid=length(unique(csv_table$user_id))
Row_num==Num_Unique_usersid
Unique_users=unique(csv_table$user_id)
Col_num=max(csv_table$jokes)
Num_Unique_jokes=length(unique(csv_table$jokes))
Col_num==Num_Unique_jokes
Unique_jokes=unique(csv_table$jokes)
rownames(Mat_ratings)=paste0("userid_",seq(1:nrow(Mat_ratings)))
colnames(Mat_ratings)=paste0("jokes_",Unique_jokes)
Unique_users_sorted=sort(unique(csv_table$user_id))
identical(Unique_users_sorted,Unique_users)
Unique_items_sorted=sort(unique(csv_table$jokes))
identical(Unique_items_sorted,Unique_jokes)
Mat_ratings=matrix(NA, nrow = Row_num, ncol = Num_Unique_jokes)
rownames(Mat_ratings)=paste0("user_",Unique_users_sorted)
colnames(Mat_ratings)=paste0("item_",Unique_items_sorted)
for (i in 1:nrow(csv_table)){
Mat_ratings[which(csv_table$user_id[i]==Unique_users_sorted),
which(csv_table$jokes[i]==Unique_items_sorted)]=
csv_table$rating[i]
}
首先,我尝试以这种方式对其进行排序,但我知道我并没有真正对这些值做任何事情。有没有办法做到?
解决方案
我将组成一些示例数据:
mtx <- matrix(sample(5, size = 28, replace = TRUE), nrow = 7, ncol = 4)
dimnames(mtx) <- list(paste0("user_", 1:7), paste0("item_", 1:4))
set.seed(42)
mtx[sample(28, size = 10)] <- NA
mtx
# item_1 item_2 item_3 item_4
# user_1 3 NA 1 5
# user_2 4 3 NA 2
# user_3 NA 3 NA 4
# user_4 2 5 5 1
# user_5 3 NA 3 NA
# user_6 5 5 NA 1
# user_7 5 NA NA NA
从这里,只需使用rowSums
and order
:
mtx[order(rowSums(is.na(mtx))),]
# item_1 item_2 item_3 item_4
# user_4 2 5 5 1
# user_1 3 NA 1 5
# user_2 4 3 NA 2
# user_6 5 5 NA 1
# user_3 NA 3 NA 4
# user_5 3 NA 3 NA
# user_7 5 NA NA NA
如果您有排序的次要因素,请将它们包含在order
调用中。
推荐阅读
- python - 具有多个 n 数的时间序列数据预测
- angular - ion-img 在旧版本的 ionic ~3.* 上无法正常工作
- java - 从 Spring Boot 自定义验证器返回不同的 HTTP 状态代码
- python - 在 Python 中使用版本号对元组列表进行排序
- python - 如何遍历数据框中的列并在每次迭代中打印每个值
- javascript - 我的引导图像轮播有点像移动设备上的每张幻灯片滑动两次
- random - 保持变量之间的关系
- python - 每当我尝试在我的 Pycharm 上安装 conda 时都会出现错误,那么我将如何在我的 pycharm 上安装 conda?
- c# - unity GetKeyDown 好像注册了两次
- create-react-app - gh-pages 从主分支中删除我的源文件