作者elone (Next Step)
看板R_Language
標題Re: [問題] Filter 的問題
時間Thu Jul 16 09:30:48 2015
借題發揮一下
先謝謝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
https://www.youtube.com/watch?v=bbwfpT-X-e8
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.183.232
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1437010250.A.BD3.html
※ 編輯: elone (140.116.183.232), 07/16/2015 10:04:13
1F:→ andrew43: 小提醒,reindex 只要 rownames(foo) <- NULL 即可。 07/16 16:49
2F:→ andrew43: 但除非有必要,或是你有ID欄位,真的不要reindex。 07/16 16:50
3F:推 memphis: rbind 在初期很好用, 但是在超過2000 row的loop效能很差 07/16 20:04
4F:→ celestialgod: 還是建議獨立做,R太慢,分開跑再合併比較快 07/16 21:04
5F:→ elone: 謝謝大家 XDD 07/17 12:32