2017-03-14 27 views
0

私は、データフレームをrealRatingMatrixに変換しようとしていました。しかし、そのためには、まずデータフレームを行列と行列に変換してからrealRatingMatrixにします。 データフレームdfには、475984 rows3 columnsが含まれています。
Column1column2customer namescolumn3 ステップが続くそれぞれのユーザによって与えられたrating of the product含んでいる、productIDある:
1欠損値の除去
2行列にデータフレームのデータ
3変換の重複排除を4.テスト行列RのデータフレームからRへの変換

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) 

マトリックスにデータフレームを変換し、私は次の警告メッセージが出ていますが:
警告メッセージ: in data.matrix(beer_data):強制で導入されたNAs 作成した行列をデータフレームに変換すると、顧客名列(column2)には38エントリだけ残り、すべてがNAになります。

誰かが自分のコードを修正して希望の出力を得る方法を提案できますか?

+0

はあなたには、いくつかのシミュレートされたかのサンプルデータを提供することはできますか? –

答えて

0

Rでは、行列は、特定の場所で分割されて行と列を形成するベクトルに過ぎません。したがって、すべての要素は同じ型でなければなりません。特に、数値データの1列と文字データの1列のdata.frameがある場合、それを行列に変換することはできません。私は確かに分かりませんが、column2は文字ベクトルかもしれません。

私はrecommenderlabパッケージに関する知識がありません。

例:

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 
関連する問題