[問題] 不同data.table(frame)範圍篩選

看板R_Language作者 (熊貓)時間5年前 (2019/06/25 23:43), 5年前編輯推噓1(102)
留言3則, 1人參與, 5年前最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我有兩個不同的data.table,想將第一個data.table內的資料(num、value), 透過Mark關聯到第二個data.table,並設定範圍來做篩選,最後顯示出不符合的資料 目前有做一個簡單的資料來測試,看起來是有跑出來想要的結果 但將此概念套用在另一個真正想做的地方上 (資料更複雜的,有小數點、DT1的資料更多列) 好像沒有篩選乾淨的樣子,不知道在R中,兩張表的資料篩選,可以這樣做嗎? 或是有建議什麼方法,來得到我想要的結果呢? [程式範例]: library(data.table) library(dplyr) DT1 <- data.table(ID=c("F","A","E","B","C","D","C"), num=c(59,3,108,11,22,54,241), value=c(90,47,189,38,42,86,280), Mark=c("Mary","Tom","Abner","Norman","Joanne", "Bonnie","Trista")) DT2 <- data.table(Mark=c("Mary","Abner","Bonnie","Trista","Norman"), numA=c(48,20,88,237,20), numB=c(60,326,54,268,89), valueA=c(78,34,78,270,59), valueB=c(90,190,90,385,75)) output <- DT1 %>% anti_join(merge(DT1, DT2, by = "Mark") %>% filter(num > numA & num < numB & value > valueA & value < valueB), by = "Mark" ) [環境敘述]: R version 3.5.1 (2018-07-02) [關鍵字]: 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.138.65 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1561477436.A.EBB.html

06/26 00:24, 5年前 , 1F
這個例子中你期待的結果應該是什麼?
06/26 00:24, 1F

06/26 00:26, 5年前 , 2F
或是提供超乎預期的實例。
06/26 00:26, 2F
應該說,我有得到我想要的結果,想確認的是,兩張data.table 如果是用我這方法來過濾資料,會不會有問題?(沒有正確比對之類的情況) filter(num > numA & num < numB & value > valueA & value < valueB) ※ 編輯: daybreakya (120.127.169.50 臺灣), 06/26/2019 14:53:37

06/26 18:22, 5年前 , 3F
可能小心Mark有沒有一對多或多對多的情形
06/26 18:22, 3F
文章代碼(AID): #1T4a4ywx (R_Language)
文章代碼(AID): #1T4a4ywx (R_Language)