看板 R_Language 關於我們 聯絡資訊
tEyedata <- data.frame( C1 = c(0,0,0,0,0,0,0,0,0,0,0,0), C2 = c(1,1,2,2,1,2,1,2,1,2,1,2), C3 = c(5,7,6,8,7,8,9,10,3,7,4,1) ) pN <- data.frame( C1 = c(0,0), C2 = c(1,2), C3 = c(6,7) ) ## 走訪 pN 每列,但實際怎麼領悟就靠你自己了, 希望我沒寫得讓你迷路了 inx <- list() # 符合第一個條件 nwR <- list() # 符合第二個條件 ned <- list() for(i in 1:nrow(pN)){ inx[[i]] <- tEyedata[, "C1"] %in% pN[i, "C1"] & tEyedata[, "C2"] %in% pN[i, "C2"] nwR[[i]] <- ! tEyedata[inx[[i]], "C3"] >= pN[i, "C3"] ned[[i]] <- tEyedata[inx[[i]], ][nwR[[i]], ] } ned # 為所求; 要再轉成別的樣子隨意 ※ 引述《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), 來自: 140.128.117.75 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1436949268.A.111.html
elone: 謝謝大大的幫忙 07/15 17:23
andrew43: 你多測試看看。說不定我還是沒看懂你的意思。XD 07/15 17:44