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

看板R_Language作者 (為什麼會流淚)時間9年前 (2016/08/16 19:11), 9年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
舉例來說 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 每次都百萬筆去做布林比對 非常沒效率 所以想問問看有沒有類似函數可以幫我做篩選 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.53.171 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1471345900.A.1A8.html

08/16 19:27, , 1F
x %in% y 如何?
08/16 19:27, 1F

08/16 19:28, , 2F
但這不能告訴你誰是誰…
08/16 19:28, 2F
感謝版主T.T 成功了 看起來是一次比對全部 執行速度也很快 另外類似這種 %in% 的用法 有文章介紹嗎? http://chingchuan-chen.github.io/r/2015/07/01/magrittr 我有看過這篇 裡面有講一些 a_list %>% unlist %>% unique %>% sort 這些寫得蠻詳細的 正在學習中 這種方法對我來說 算是比較高階的語法了 目前我資料整理 都還是用矩陣的方式 篩選 合併 cbind 這類的code 謝謝

08/16 19:40, , 3F
library(pipeR); match(y,x) %>>% `[`(!is.na(.))
08/16 19:40, 3F
※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:47:32

08/16 19:48, , 4F
第一次看到自己部落格在別人文章中有點害羞>///<
08/16 19:48, 4F
>///< 話說R版的版主都好熱心 回應速度都超快 學到了很多 感謝>< ※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:52:22 ※ 編輯: f496328mm (114.36.53.171), 08/16/2016 19:53:24
文章代碼(AID): #1NilJi6e (R_Language)
文章代碼(AID): #1NilJi6e (R_Language)