2016-12-01 67 views
0

我有一個R視頻數據集,超過5000個觀測數據和另一個電影數據集,它們基於這些數據集的觀測數據剛好超過1,600個。我想合併數據集並將其集合到僅基於書籍的電影中。在R中觀測數量不等的數據集的子集R

下面是電影數據集幾個樣品datalines:

movie_title  duration gross  content_rating year 
Avatar   178  760505847  PG-13   2009 
The Jungle Book 106  362645141  PG    2016 

和一對夫婦從書本數據集:

movie_title       book  author   released 
Hunger Games: Mockingjay, Part 2 Mockingjay Suzanne Collins 2015 
Insurgent       Insurgent Veronica Roth 2015 

我只關心他們共有的movie_titles。 我試圖通過電影標題合併兩個數據集,它說有0個觀察值。

movies<-merge(imdb.movies,booklist, by="movie_title") 

我也嘗試使用此代碼對其進行篩選:

filter(imdb.movies, imdb.movies$movie_title==booklist$movie_title) 

,並與該代碼相結合:

combined_movies<- imdb.movies[imdb.movies$movie_title==booklist$movie_title] 

這些都不似乎工作。有沒有辦法比較imdb.movies$movie_title==booklist$movie_title,只保留相同的觀察值?

+0

如果我理解正確,你想交叉(imdb.movi​​es $ movie_title,booklist $ movie_title)'。一旦你有兩個列表的交集,你可以將任何數據集都加入到在交集中有電影標題的觀察值中。 – cpander

+0

是否有_partial_匹配?或者move_titles應該與兩個數據集之間的_exactly_匹配?你的合併代碼對我來說似乎很好。如果結果爲0個觀察值,那麼很可能沒有與_exactly_ – useR

回答

0

使用dplyr你可以使用:

inner_join(imdb.movies,booklist) 

假設,在這兩個數據幀的movie_title列名是相同的,並認爲此舉名稱/書名是相同的。

+0

相匹配的movie_titles這不就是隻給出與merge(imdb.movi​​es,booklist,by =「movie_title」)''相同的結果嗎? – cpander

+0

在一段時間內沒有使用過合併,只好快速瀏覽一下,但你可能是對的。關於'完全匹配',我在答覆中補充了一個警告。 – Jacob