Re: [問題] Filter 的問題

看板R_Language作者 (攸藍)時間9年前 (2015/07/15 17:53), 9年前編輯推噓4(402)
留言6則, 5人參與, 最新討論串3/4 (看更多)
提供一個我覺得有點酷的方法~~用sweep做 (我直接根據andrew大大改的) tEyedata = matrix(c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,1,2,1,2,1,2,1,2,5,7,6, 8,7,8,9,10,3,7,4,1),12,3) pN = matrix(c(0,0,1,2,6,7),2,3) out = vector('list', nrow(pN)) for (i in 1:nrow(pN)){ tmp = sweep(tEyedata, 2, pN[i,], '-') out[[i]] = tEyedata[which(tmp[,1] == 0 & tmp[,2] == 0 & tmp[,3] < 0),] } (out_all = do.call(rbind, out)) out_all即為所求 其中sweep是一個很方便的function 可以matrix(第一個input)對vector(第三個input)做運算 行或列則以第二個input做判斷 (根本只是想偷渡sweep.... sweep向量運算版: tEyedata <- matrix(c(0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,1,2,1,2,1,2,1,2,5,7,6,8,7,8, 9,10,3,7,4,1),12,3) pN <- matrix(c(0,0,1,2,6,7),2,3) out = vector('list', nrow(pN)) for (i in 1:nrow(pN)) out[[i]] = tEyedata[sweep(tEyedata, 2, pN[i,], function(x, y){ x[,1] == y[,1] & x[,2] == y[,2] & x[,3] < y[,3] }),] (out_all = do.call(rbind, out)) ※ 引述《elone (Next Step)》之銘言: : 不好意思 小弟是一個新入門的菜逼巴 平常只會寫 C : 小弟有一個要做多重 filter 的問題... : 前言 : 事情是這樣的 我們想針對不同的使用者與其不同的判斷條件去刪資料 : ex : source file (因為變數很長所以用ABC 來代替) : tEyedata : C1 C2 C3 : A 0 1 5 : A 0 1 7 : A 0 2 6 : A 0 2 8 : B 0 1 7 : B 0 2 8 : C 0 1 9 : C 0 2 10 : Filter file : pN : C1 C2 C3 : A 0 1 6 : A 0 2 7 : B ... : C .. : ... : 我們要逐一比對 tEyedata C1 C2 和 pN C1 C2 是否有一樣 :   如果一樣的話 再去看 tEyedata$C3 是否有 >= pN$C3 : 如果有的話 就會把這筆record 拿掉 : 如果沒有的話 就會留下這筆 record : 就結果來說應該 tEyedata 會變成 : C1 C2 C3 : A 0 1 5 : A 0 2 6 : B .. : 但是我們的code 都會拿光光 QAQ ... 卡了2天了啊啊啊 : #read prune file : tEyedata <- read.table("Eye.txt",header=T) : pN <- read.table("Eye/Eye_Prune.txt",header=T) : for(i in 1:nrows(tEyedata)) : { : for(j in 1:nrows(pN)) : { : if(tEyedata$subject[[i]] == pN$subejct[[j]] & C1 = C1 & D1 = D1 ) : { : tEyedata <- subset(tEyedata, tEyedata$C3 <= pN$C3[[j]] ) : } : } : } : 但是他都會把不該拿掉的東西拿掉 我好苦惱啊 :   希望有大大可以來救我 :   謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.13.191 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1436954001.A.0C6.html

07/15 18:04, , 1F
有偷學有推。
07/15 18:04, 1F

07/15 22:40, , 2F
got one tip! thanks ^^
07/15 22:40, 2F

07/15 23:10, , 3F
一個cat和一個比較也可以啊
07/15 23:10, 3F

07/15 23:11, , 4F
all.equal也許也可以
07/15 23:11, 4F
※ 編輯: celestialgod (111.248.13.191), 07/15/2015 23:36:00

07/16 10:19, , 5F
有學有推
07/16 10:19, 5F

07/16 14:48, , 6F
push
07/16 14:48, 6F
文章代碼(AID): #1LfYsH36 (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
文章代碼(AID): #1LfYsH36 (R_Language)