Re: [問題] Filter 的問題
提供一個我覺得有點酷的方法~~用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
07/15 22:40, 2F
→
07/15 23:10, , 3F
07/15 23:10, 3F
→
07/15 23:11, , 4F
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
07/16 14:48, 6F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章