将数据帧转换为R

时间:2017-03-14 08:41:03

标签: r recommendation-engine

我试图将数据帧转换为realRatingMatrix。但为此,我首先将数据帧转换为矩阵,将矩阵转换为realRatingMatrix。 数据框 df 包含475984 rows3 columns Column1productIDcolumn2customer namescolumn3包含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。

有人可以建议一些方法来纠正我的代码并获得所需的输出。

1 个答案:

答案 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