Re: [問題] Filter 的問題

看板R_Language作者 (Next Step)時間9年前 (2015/07/16 09:30), 9年前編輯推噓1(104)
留言5則, 4人參與, 最新討論串4/4 (看更多)
借題發揮一下 先謝謝2位大大的幫忙 昨天晚上也試了一個 rbind 也可以完成類似的東西 ,單純分享心得 XDDD 應該很多大大都會了 ※ 引述《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) tmp <- NULL : 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]] ) tmp <- rbind(df4, tEyendata[c(i),c(1:3)]) : } : } : } 最後再reindex ~~~ rownames(Eyedata) <- 1:nrow(Eyedata) : 但是他都會把不該拿掉的東西拿掉 我好苦惱啊 :   希望有大大可以來救我 :   謝謝 謝謝大家的幫忙 !!! -- Allen Iverson - It's not Over http://www.youtube.com/watch?v=bbwfpT-X-e8
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.183.232 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1437010250.A.BD3.html ※ 編輯: elone (140.116.183.232), 07/16/2015 10:04:13

07/16 16:49, , 1F
小提醒,reindex 只要 rownames(foo) <- NULL 即可。
07/16 16:49, 1F

07/16 16:50, , 2F
但除非有必要,或是你有ID欄位,真的不要reindex。
07/16 16:50, 2F

07/16 20:04, , 3F
rbind 在初期很好用, 但是在超過2000 row的loop效能很差
07/16 20:04, 3F

07/16 21:04, , 4F
還是建議獨立做,R太慢,分開跑再合併比較快
07/16 21:04, 4F

07/17 12:32, , 5F
謝謝大家 XDD
07/17 12:32, 5F
文章代碼(AID): #1LfmbAlJ (R_Language)
文章代碼(AID): #1LfmbAlJ (R_Language)