2016-10-19 12 views
0

この場合、データを比較するためにグラフを作成していて、ボックスプロットで作業していました。 、データフレームは、このように見えたが、これらの箱ひげ図を作成するために、むしろ簡単だったIMDBのためRボックスプロットのデータを効率的に分割

:私は(http://grouplens.org/datasets/movielens/ここから):IMDBのデータ、また、100K Movielensデータを持っている enter image description here

MovieLensについてしかし、ジャンルのルックス enter image description here

これに複数のジャンルがある場合、どのようにしてボックスプロットを作成できますか?ベストケースは次のようになり、私は既に持っているのIMDB箱ひげ図、にそれを組み合わせることである:現在

enter image description here

、IMDBのの1のコードは、このようなものです:

all_movies$Rating <- sapply(sapply(all_movies$Rating, as.character), as.numeric) 
    output$boxplot <- renderPlot({ 
    p <- ggplot(all_movies) + geom_boxplot(aes(x = Genre, y = Rating)) 
    p 
    }) 

どうだろうMovielensのためのこの作品は、同様のものを作成する?

+0

場合あなたは「ジュマンジ」をそれぞれの映画として数えたい「冒険」、「子供」、「ファンタジー」のジャンルの中から、あなたの最善の策は、各ジャンルのジャンルごとにあなたのデータセットにその行を追加することです。 – Gregor

答えて

1

グレゴールは、すでに私も最善の解決策だと思うものを提案します。a DFの両方に追加し、

# example df 

lens=data.frame(movie=c('A','B'),genre=c('Adventure|Animation','Comedy|Animation'),rating=8:9) 

# create new columns 

genres=unique(unlist(strsplit(as.character(lens$genre),"\\|"))) 
for(i in genres){ 
    lens$newcol=grepl(i,lens$genre) 
    colnames(lens)[ncol(lens)]=i 
} 
lens$genre=NULL 

# melt for ggplot 

lens=melt(lens,id=c('movie','rating')) 
lens=lens[lens$value==TRUE,] 

ggplot(lens,aes(x=variable,y=rating)) + geom_boxplot() 

あなたは、両方の映画のデータベースが同じプロットになりたい場合は、あなたは、単にAMDBに同じ構造を作成名前の列(ADMBの$ソースは= "ADMB"、レンズ$ソースは= "movielens")と(DF = rbind(ADMB、movielens)それらをrbind

プロットは次のようになります。

ggplot(df,aes(x=variable,y=rating,col=source)) + geom_boxplot() 
+0

ありがとう、間違いなくこの1つを試してみる – dnsko

関連する問題