如何按日期合并两个不同数据框的文本?

时间:2019-10-06 09:26:41

标签: r dataframe

我有两个不同的数据框,每个数据框按月包含不同的文本。我想做的是将具有相同日期的文本合并到一个数据框中。

让我以一个例子进行说明。这是 dataframe_A ,其中第三列(文章)包含每个日期的一些文本:

            Date            Title  Article
1  1 January 2000 PRESS CONFERENCE Article_topic_A_1
2 1 February 2000 PRESS CONFERENCE Article_topic_A_2
3    1 March 2000 PRESS CONFERENCE Article_topic_A_3

这是 dataframe_B ,其中包含不同文本,但日期相同

            Date            Title  Article
1  1 January 2000 PRESS CONFERENCE Article_topic_B_1
2 1 February 2000 PRESS CONFERENCE Article_topic_B_2
3    1 March 2000 PRESS CONFERENCE Article_topic_B_3

现在,我想将 Article_topic_A_1 的文本与 Article_topic_B_1 的文本, Article_topic_A_2 的文本和 Article_topic_B_2 ,依此类推。对于同一日期(例如:2000年1月1日),我想合并不同的文章(例如:Article_topic_A_1和Article_topic_B_1)。基本上,最终数据帧应如下所示:

            Date            Title  Article
1  1 January 2000 PRESS CONFERENCE Article1
2 1 February 2000 PRESS CONFERENCE Article2
3    1 March 2000 PRESS CONFERENCE Article3

第三列将包含按“日期”分组的合并文本。

我尝试使用 merge subset ,但是我没有做到这一点。

您能帮我吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

这是使用merge的解决方案,两者的文本均以,分隔。

df_a <- data.frame(
  Date = c("1 January 2000", "1 February 2000", "1 March 2000"),
  Title = rep("PRESS CONFERENCE", 3),
  Article = c("Article_topic_A_1", "Article_topic_A_2", "Article_topic_A_3")
)

df_b <- data.frame(
  Date = c("1 January 2000", "1 February 2000", "1 March 2000"),
  Title = rep("PRESS CONFERENCE", 3),
  Article = c("Article_topic_B_1", "Article_topic_B_2", "Article_topic_B_3")
)

df <- merge(df_a, df_b, by = c("Date", "Title"))
df$Article <- paste(df$Article.x, df$Article.y, sep = ", ")
df <- df[, !(names(df) %in% c("Article.x", "Article.y"))]
df
#>              Date            Title                              Article
#> 1 1 February 2000 PRESS CONFERENCE Article_topic_A_2, Article_topic_B_2
#> 2  1 January 2000 PRESS CONFERENCE Article_topic_A_1, Article_topic_B_1
#> 3    1 March 2000 PRESS CONFERENCE Article_topic_A_3, Article_topic_B_3