【发布时间】:2015-11-09 21:40:33
【问题描述】:
我已经尝试这样做了 2-3 天,但仍然找不到答案。我想要做的是我有两个数据框 x,y(在下面给出了它们的示例)
X
Response.No Tab.No Survey.Date AC.Name Mandal.Name Village.Name
1 9530 1 2015-05-26 NA NA NA
2 6702 1 2015-05-30 NA NA NA
3 26744 1 2015-05-31 NA NA NA
4 8925 1 2015-06-03 NA NA NA
5 20242 1 2015-06-04 NA NA NA
6 21316 1 2015-06-04 NA NA NA
7 28056 1 2015-06-04 NA NA NA
8 12661 1 2015-06-05 NA NA NA
9 17187 1 2015-06-05 NA NA NA
10 28795 1 2015-06-05 NA NA NA
Y
AC.Name Mandal.Name Village.Name Tab.No Survey.Start.Date Survey.End.Date
1 Nandigama Chanderlapadu Punnavalli 1 2015-05-23 2015-05-27
2 Nandigama Chanderlapadu Kasarabada 1 2015-05-30 2015-06-07
3 Nandigama Chanderlapadu Kodavatikallu 1 2015-06-09 2015-06-28
4 Nandigama Chanderlapadu Thurlapadu 1 2015-06-29 2015-07-13
5 Nandigama Chanderlapadu Chanderlapadu 1 2015-07-14 2015-07-25
6 Nandigama Chanderlapadu Popuru 2 2015-05-23 2015-05-27
7 Nandigama Chanderlapadu Kandrapadu 2 2015-05-30 2015-06-08
8 Nandigama Chanderlapadu Vibhareethalapadu 3 2015-05-30 2015-06-04
9 Nandigama Chanderlapadu Eturu 3 2015-06-10 2015-06-23
10 Nandigama Chanderlapadu Bobbillapadu 3 2015-06-26 2015-07-03
即我想通过 Tab.No 列匹配 x 和 y,但还要确保 x$Survey.Date 位于 y$Survey.Start.Date 和 y$Survey.End.Date 之间。如果两个条件都不满足,则该行必须具有 N.A 值。我已经尝试并搜索了 google stackoverflow 和 R-Studio 帮助,但无法获得所需的结果。
Z
Response.No Tab.No Survey.Date AC.Name Mandal.Name Village.Name
1 9530 1 2015-05-26 Nandigama Chanderlapadu Punnavalli
2 6702 1 2015-05-30 Nandigama Chanderlapadu Kasarabada
3 26744 1 2015-05-31 Nandigama Chanderlapadu Kasarabada
4 8925 1 2015-06-03 Nandigama Chanderlapadu Kasarabada
5 20242 1 2015-06-04 Nandigama Chanderlapadu Kasarabada
6 21316 1 2015-06-04 Nandigama Chanderlapadu Kasarabada
7 28056 1 2015-06-04 Nandigama Chanderlapadu Kasarabada
8 12661 1 2015-06-05 Nandigama Chanderlapadu Kasarabada
9 17187 1 2015-06-05 Nandigama Chanderlapadu Kasarabada
10 28795 1 2015-06-05 Nandigama Chanderlapadu Kasarabada
我已经检查过: 1.How to merge two dataframes in R based on two conditions, matching column and within a range? 2.roll join with start/end window 3.Conditional merge/replacement in R
我一直在尝试使用 merge()、cbind() 和 match() 来解决这个问题,但无济于事。 我可以仅使用序列但没有日期条件进行合并。
感谢您的帮助
【问题讨论】:
-
如果您粘贴(作为编辑)
dput(head(X))的结果以及Y的相同内容,您可能会获得更多帮助。这样我们就可以使用您的数据,而不必编造一些可能会在实质上有所不同的内容。 -
在
X中,列add1和add2总是N.A? -
那么为什么不从
X中删除列add1和add2,在serial上合并,然后进行日期比较并将add1和add2更新为NA,如果日期不符合您的条件?有什么我不明白的吗? -
等等,让我把实际数据放在这个问题中,这可能真的很有帮助
-
您在开始时发布了一个很好的可重现示例,它显示了您的数据中的不同场景以及您试图完成的任务。数据的标题不会,因为它仅限于一种情况。最好的解决方案是发布您在答案正文中发布的第一个示例的 dput。 dput 比列符号好得多,因为我们可以直接复制和过去。不过,您的第一个问题还不错,这些事情随着时间的推移而出现!