Re: [问题] Filter 的问题

楼主: elone (阿万师)   2015-07-16 09:30:48
借题发挥一下
先谢谢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)
: 但是他都会把不该拿掉的东西拿掉 我好苦恼啊
:   希望有大大可以来救我
:   谢谢
谢谢大家的帮忙 !!!
作者: andrew43 (讨厌有好心推文后删文者)   2015-07-16 16:49:00
小提醒,reindex 只要 rownames(foo) <- NULL 即可。但除非有必要,或是你有ID字段,真的不要reindex。
作者: memphis (让你喜欢这世界~)   2015-07-16 20:04:00
rbind 在初期很好用, 但是在超过2000 row的loop效能很差
作者: celestialgod (天)   2015-07-16 21:04:00
还是建议独立做,R太慢,分开跑再合并比较快
楼主: elone (阿万师)   2015-07-17 12:32:00
谢谢大家 XDD

Links booklink

Contact Us: admin [ a t ] ucptt.com