[問題] 資料篩選相關問題 多對多

作者: f496328mm (為什麼會流淚)   2016-08-16 19:11:38
舉例來說
x=c(123,456,897,243,651,852,964,357,555)
y=c(651,852,111)
我想要從 x 中 篩選出 y 中有的變數 651 852 111
111沒有出現在 x 中 所以不用顯示出來
基本上我想要的就是位置 5,6 ( 651=x[5] 852=x[6] )
目前我的想法是
#先用布林值去判斷哪個為true
#再去找位置
bo = as.integer( x == y[1] )
bo_matr = matrix(bo)
map =
which(apply(bo_matr, 1L,function(row) all(row == 1)))
這樣就很清楚知道是 x 中的 5,6 是我要的 (因為 true=1 )
但是這樣很花時間
因為我 x y 各有上百萬筆row
每次都百萬筆去做布林比對
非常沒效率
所以想問問看有沒有類似函數可以幫我做篩選
謝謝
作者: andrew43 (討厭有好心推文後刪文者)   2016-08-16 19:27:00
x %in% y 如何?但這不能告訴你誰是誰…
作者: celestialgod (天)   2016-08-16 19:40:00
library(pipeR); match(y,x) %>>% `[`(!is.na(.))第一次看到自己部落格在別人文章中有點害羞>///<

Links booklink

Contact Us: admin [ a t ] ucptt.com