2017-09-06 56 views
-1

我們採取兩種dataframes:我想分配給ColA2從ColB1的匹配值A和B.獲取%運營商使用%的匹配值

Dataframe: A    Dataframe: B 
    ColA1 ColA2  ColB1  
    | Dog | Dog | | Lion | 
    | Lion | Lion | | Cat | 
    | Zebra | NA | | Tiger| 
    | Bat | NA | | Dog | 

A$ColA2 <- ifelse((A$ColA1 %in% B$ColB1), "occurence" , NA) 

如何從ColB1中獲得匹配值(=「occurence」)?即,「獅子」的匹配值取自ColB1。

謝謝!

+1

請提供與預期輸出小例子。 – Axeman

+0

'ifelse'和'%in%'被矢量化;他們遍歷整個向量,首先做第一個元素,有效地詢問「是否在'ColB1'中列出了'A'中的ColA1列的第一個元素?」,「ColA1列中的第一個元素是否在' A'也列在'ColB1'?「中,等等。所以,如果ColA1的第一個元素也在ColB1中,那它是什麼元素?當然第一。在這種情況下,'ifelse'將取第二個參數的第一個元素。所以這應該工作: 'x < - ifelse(A $ ColA1%在%B $ ColB1,A $ ColA1,NA)' –

+0

我編輯了我的問題。它略有不同 –

回答

1

您可以使用match函數來獲取與B $ Col1匹配的A $ Col1的值。或直接使用%in%

A$col1[match(A$col1,B$col1,nonmatch=0)] 
A$col1[A$col1%in%B$col1] 

找到那些B $ Col1中,我們互換了位置: B $ COL1 [B $ COL1%的%A $ COL1]