我有两个dataframes(df1
和df2
)中,用guest_id
,money
和date
结果多重比较,而无需使用“为”
我想以识别是否在所述第一数据帧的元件也在通过使用这些3.对于我希望使用,我将在添加一个df1
变量和所述第二数据帧我会说出match
,这需要1如果在df1
的元素也是df2
,否则为0
然而,它们并不完美匹配(因为t中存在一些错误他报告),所以我不能简单地因此,由这3列或类似的
东西将它们合并,我想作一些简单的比较得知:
- 有与guest_id比较没有错误,以便我想检查时
guest_id
为df1
匹配guest_id
为df2
- 警告:guest_id可以在数据帧
- 当客人在
df1
和df2
,我想要再检查0123多次出现和date
。我想这样做是这样的:- 对于
money
使money
之间的差异df1
对于给定guest_id
与所有的money
可以在df2
出现(但同样只在一定的guest_id
)。如果有一个occurence接近于0(-1到1之间,或<=
1,如果我使用abs()
),那么我认为money
比赛 - 对于
date
:我做的比在money
同样的事情;我认为,如果的df1
在df2$date - 5
之间;df2$date + 5
,然后date
匹配(再次,我想只对给定的guest_id
进行这些比较,而不看整个数据帧,否则它可能匹配money
或date
,但是对于另一个来宾,这就是我遇到的问题)
- 对于
- 因此,如果我有一个匹配
guest_id
的money
和date
,我可以把1我match
变量,否则这是一个0
我用dplyr
,但我初学者,我很难找到正确的sequ要使用的功能。我也宁愿避免使用for
因为我大dataframes工作,所以它肯定会花费太多时间让我的结果
概括起来讲,这是我有:
df1
guest_id money date
1 10.2 2017-01-01
1 10.3 2000-01-01
1 50.0 2017-01-01
2 10.5 2017-01-01
2 9.5 2017-01-01
3 100.0 2000-01-01
df2
guest_id money date
1 10 2017-01-01
1 10 2015-01-01
2 10 2017-01-03
而且结果:
df_res
guest_id money date match
1 10.2 2017-01-01 1 #difference with money is ok to still have a match
1 10.3 2000-01-01 0 #match with money but not date
1 50.0 2017-01-01 0 #match with date but not money
2 10.5 2017-01-01 1 #match with money ; difference with date is close enough to have a match
2 9.5 2017-01-01 1 #Also a match
3 100.0 2000-01-01 0 #Doesn't match with guest_id
有谁有如何做到这一点(甚至是完全不同这个问题的方法)的想法?
看看'fuzzyjoin'包,但我确定使用两个合并列(其中一个是模糊的,一个不是)是可能的。 –
谢谢!乍一看,它似乎可以帮助很多 – MBB