我试图将数据帧转换为realRatingMatrix。但为此,我首先将数据帧转换为矩阵,将矩阵转换为realRatingMatrix。
数据框 df 包含475984 rows
和3 columns
Column1
是productID
,column2
是customer names
,column3
包含rating of the product
由相应的用户提供
步骤如下:
1.删除缺失值
2.数据的重复数据删除
3.将数据帧转换为矩阵
4.测试矩阵
library(recommenderlab)
sapply(df, function(x) sum(is.na(x)))
# 100 missing values in column2
df <- df[-which(is.na(df$col2) == TRUE), ]
sum(duplicated(df))
# 580 duplicates
df <- df[-which(duplicated(df) == TRUE), ]
# Converting the dataframe into realratingMatrix
df_matrix <- data.matrix(df)
# Testing matrix
str(df_matrix)
df1 <- as.data.frame(df_matrix)
在将数据帧转换为矩阵时,我收到以下警告消息:
警告讯息:
在data.matrix(beer_data)中:强制引入的NA
现在,当我将创建的矩阵转换为数据帧时,我的客户名称列(column2)只有38个条目,其余的都是NA。
有人可以建议一些方法来纠正我的代码并获得所需的输出。
答案 0 :(得分:0)
在R中,矩阵只是在某些位置分割以形成行和列的向量。因此,所有元素必须是相同的类型。特别是,如果您有一个包含一列数字数据的data.frame和一列字符数据,您将无法将其转换为矩阵。我不确定,但看起来column2可能是一个字符向量。
请注意,我不了解推荐器包。
一个例子:
df <- data.frame(col1 = c("A", "B"), col2 = 1:2, stringsAsFactors = F)
data.matrix(df)
#Warning message:
#In data.matrix(df) : NAs introduced by coercion
df
# col1 col2
#[1,] NA 1
#[2,] NA 2