在R中组合两个DF并仅保留其中具有共同日期的行

时间:2017-03-22 18:36:35

标签: r

我对R很新,但确实试图找到我的问题的答案,但没有成功。

我有两个数据框“Brexit_final”和“Brexit_Google_Trends”。两个数据框都有一个“日期”列但是! Brexit_Final框架的日期比另一个框架少。我想创建一组新数据,其中只保留两个帧都有日期的行。

在此过程中我还想删除很多列。

Brexit_Final
Date        Remain   Leave  Undecided  Total_Difference
2016-06-18  42       44     13         7.5
2016-06-20  47.25    46     5.25       15
2016-06-23  55       45     0          14

Brexit_Google_Trends
Date        EU       Referendum  Brexit  Difference
2016-06-18  44       100         65      22
2016-06-19  23       100         62      55
2016-06-20  28       40          36      24
2016-06-21  37       55          43      36
2016-06-22  7        10          55      44
2016-06-23  67       100         62      103

Dream_Frame
Date        Total_Difference  Difference
2016-06-18  7.5               22
2016-06-20  15                24
2016-06-23  14                103

4 个答案:

答案 0 :(得分:2)

You can use an inner_join from the dplyr package.

inner_join(Brexit_Final, Brexit_Google_Trends, by = "Date") %>% select(Total_Difference,  Difference)

答案 1 :(得分:1)

From this canonical question, we get:

Dream_Frame <- merge(Brexit_Final, Brexit_Google_Trends, by = "Date")
Dream_Frame <- Dream_Frame[,c("Date", "Total_Difference", "Difference")

Or, to do it in one step,

Dream_Frame <- merge(Brexit_Final[, c("Date", "Total_Difference")], 
                     Brexit_Google_Trends[, c("Date", "Difference")],
                     by = "Date")

答案 2 :(得分:1)

Brexit_Final = Brexit_Final[,c("Date","Total_Difference")]
Brexit_Google_Trends = Brexit_Google_Trends[,c("Date","Difference")]
Dream = merge(Brexit_Final, Brexit_Google_Trends,by="Date")

答案 3 :(得分:0)

使用&#34;学生&#34;的建议

inner_join(Brexit_Final,Brexit_Google_Trends,by =&#34; Date&#34;)%&gt;%select(Date,Total_Difference,Difference)

稍微添加&#34;日期&#34;作为一个保持的列。 如果有其他人在努力解决这个问题。我的数据框中的一个问题是&#34;差异&#34;和&#34; Total_Difference&#34;不是数字格式,而是我附加到其他数据框架的数据框架。所以我用过:

Brexit_final $ Total_Difference&lt; - as.numeric(Brexit_final $ Total_Difference [[1]])

同样的&#34;差异&#34;首先使它们成为数字。然后所有提供的解决方案都有效

感谢您的帮助@all