【问题标题】:Left join in R by character type按字符类型在 R 中左连接
【发布时间】:2018-08-21 09:00:24
【问题描述】:

我正在尝试从 2 个不同的网站抓取电影集

我想结合这两个信息,并使用电影标题名称将它们捆绑起来。这是第一个数据集的样子

structure(list(event_name = c("maze runner: the death cure", "star wars: the last jedi", 
"spider-man: homecoming"), event_start_time = structure(c(100, 
200, 300), class = "Date"), movie_sold_all = c(100L, 200L, 
300L)), .Names = c("event_name", "event_start_time", "movie_sold_all"
), row.names = c(NA, 3L), class = "data.frame")

这是我抓取的第二个数据集

我只需要上传图片,因为有 >10 列

我希望加入movie_title,这样他们就会合并这两个信息。基本类似于 SQL 中的left join

我试过merge( df_bq_movies,movies,by.y="movie_title",all.x = TRUE)

但发生错误

Error in merge.data.frame(df_bq_movies, movies, by.y = "movie_title", :'by.x' and 'by.y' specify different numbers of columns

更多信息,这是数据集的维度

data 1 : 605 rows , 3 column data 2 : 509 rows , 21 column

【问题讨论】:

  • 在第一个数据集中,名字是event_name
  • 试试library(dplyr); left_join(df_bq_movies, movies, by=c("event_name" = "movie_title")
  • @akrun 两个数据集应该有相同的列名吗?
  • 如果您查看@Stephan 的评论,它也可能有所不同。使用merge,需要指定by.x
  • @akrun 已经证明两个列名现在相同,所有列现在都使用 left join 进入同一个数据框,但是第二个数据框列返回 NA。是因为角色吗?

标签: r merge left-join


【解决方案1】:

使用合并,您必须同时定义 by.xby.y,如果两个数据集上的列名称相同,您可以改用 by

例如

 merge( df_bq_movies, movies, by.x = "event_name", by.y = "movie_title")

【讨论】:

  • 哦,那我应该有相同的列名吗? @snaut
  • 不。试试by.x = "event_name", by.y = "movie_title"。请尝试阅读函数文档。
  • 感谢您的编辑,答案对它更有用。
  • 这很好用,为什么它上次不起作用是因为我的第一个数据集有尾随空格@Aramis7d
猜你喜欢
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多