看板 R_Language 關於我們 聯絡資訊
※ 引述《Tampa (光芒)》之銘言: : ※ 引述《Tampa (光芒)》之銘言: : : 作者: Tampa (光芒) 看板: Database : : 標題: [SQL ] 篩選欄位內相同資料 : : 時間: Fri Aug 19 23:28:06 2016 : 謝謝各位大大回復 : 新增一個問題 : : 問題如下 : 手機號碼4 天數4 手機號碼5 天數5 : : 111 3 118 4 : : 112 4 113 5 : : 113 5 111 8 : : 115 5 116 9 : : 118 6 119 10 : : . . . . : 篩選條件如下 : 1.當手機號碼4中 有符合手機號碼5的資料,則回傳天數4所對應欄位的資料 : (類似excel的index) : : 希望呈現如下 : : 手機號碼4 天數4 手機號碼5 天數5 : : 111 3 111 8 : : 113 5 113 5 : 118 6 118 4 : 情境就是 : 想分析公司推完活動後,是否有明顯增加使用者使用的天數 : 感謝各位大大 cp_num_gen_f <- function(n) paste0("09", apply(matrix(sample(0:9, 8*n, TRUE), n), 1, paste0, collapse ="")) dat <- data.frame(cp4 = cp_num_gen_f(10), nd4 = rpois(10, 5), cp5 = 0, nd5 = rpois(10, 6), stringsAsFactors = FALSE) dat$cp5 <- c(sample(dat$cp4, 3), cp_num_gen_f(7)) # 1. match(dat$cp5, dat$cp4) # 2. library(dplyr) dat %>% mutate(idx = match(cp5, cp4)) %>% mutate(cp4_match = dat[idx, 1], nd4_match = dat[idx, 2]) %>% filter(!is.na(cp4_match)) # cp4 nd4 cp5 nd5 idx cp4_match nd4_match # 1 0969429990 7 0993267331 6 2 0993267331 2 # 2 0993267331 2 0941547740 4 4 0941547740 4 # 3 0999020937 4 0930712667 2 7 0930712667 1 8/22修改:調換index順序,才符合原PO的問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.253.89.216 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1471761205.A.03A.html
cywhale: 這題用intersect如何~DT<-data.table(dat)%>%setkey(cp4) 08/22 11:11
cywhale: DT[intersect(cp4,cp5),] 08/22 11:12
cywhale: 事實上我後來發現版主c大的方法比較完整,不只是subset 08/22 15:08
cywhale: 且會正確地回傳 (cp5, nd5) 對應的欄位 08/22 15:08
celestialgod: intersect沒有位置資訊會不合適,還是用match處理比 08/22 18:44
celestialgod: 較妥當 08/22 18:44
celestialgod: 只是資料量比較大的時候,要記得先把match算出來當 08/22 18:44
celestialgod: 作column再做後面計算 08/22 18:44
※ 編輯: celestialgod (118.170.43.225), 08/22/2016 22:43:26