如何用R从用户-文章访问表生成访问次数矩阵
嘿,我来帮你搞定这个用户-文章访问次数矩阵的构建!在R里有几种简单好用的方法,完全能满足你统计重复访问次数的需求,我给你介绍两种常用的:
方法一:基础R的table()函数(最快捷)
table()函数可以直接帮你统计每一组用户-文章的出现次数,一步到位:
# 先创建你的数据集 A_ID<-c(111,116,111,112,112,114,116,113,114,111,114,116,115,116) U_ID<-c(221,221,222,222,223,223,223,224,224,225,225,225,226,226) df_u_a<-data.frame(U_ID,A_ID) # 生成访问次数矩阵 visit_matrix <- table(df_u_a$U_ID, df_u_a$A_ID) # 查看结果 print(visit_matrix)
运行后你会看到,矩阵的行是用户ID,列是文章ID,每个单元格的数值就是对应用户访问该文章的次数——比如用户226对应的116列数值是2,完美符合你的要求。
方法二:tidyverse的pivot_wider()(更灵活)
如果你平时习惯用tidyverse生态做数据处理,这种方法能给你更多格式调整的空间,比如把未访问的文章次数默认设为0:
library(tidyverse) # 先统计每个用户-文章的访问次数 count_df <- df_u_a %>% count(U_ID, A_ID, name = "visit_count") # 转换为宽格式矩阵 visit_matrix_wide <- count_df %>% pivot_wider(names_from = A_ID, values_from = visit_count, values_fill = 0) # 若需要纯矩阵格式(而非数据框),可以再转换一步 visit_matrix_final <- as.matrix(visit_matrix_wide[, -1]) rownames(visit_matrix_final) <- visit_matrix_wide$U_ID print(visit_matrix_final)
这个方法先通过count()明确统计次数,再用pivot_wider转成宽表,values_fill=0会自动把用户没访问过的文章次数补为0,后续如果要做更多数据清洗或分析,这个格式会更顺手。
内容的提问来源于stack exchange,提问作者Selrac
相关产品推荐
相关产品推荐

