2016-12-01 60 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