我有兩個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