【发布时间】:2019-10-22 04:04:50
【问题描述】:
我有两个数据框(df1 和 df2),我想要一个新的数据框 (df3),其中包含 df1 的“日期”和“time_of_day”与 df2 匹配的所有行。并将 df1 中不匹配的行保存在新的数据帧 (df4) 中。
我尝试使用 dplyr 过滤器函数,但似乎我没有正确编写它,因为我得到了一个与 df1 长度相同的新数据帧,但它应该只显示基于两个变量日期和时间的匹配行一天。
> df1
date time_of_day
1 2018-06-03 morning
2 2018-06-06 afternoon
4 2018-06-09 morning
5 2018-06-10 afternoon
> df2
date time_of_day
1 2018-06-03 morning
2 2018-06-06 morning
3 2018-06-08 morning
4 2018-06-09 morning
5 2018-06-10 afternoon
6 2018-06-11 afternoon
#creating a new data frame
df3 <- filter(df1, date %in% df2$date & time_of_day %in% df2$time_of_day)
#another try
df3 <- df1[df1$date %in% df2$date & df1$time_of_day %in% df2$time_of_day,]
这就是我想要的:
> df3
date time_of_day
1 2018-06-03 morning
2 2018-06-09 morning
3 2018-06-10 afternoon
> df4
date time_of_day
1 2018-06-06 afternoon
【问题讨论】:
-
试试
inner_join(df1, df2)和anti_join(df1, df2)
标签: r conditional-statements statements