根据另一个数据框的内容来除去原数据框的一些数据
<br />
> dat1 <- data.frame(M=c("mt1","mt1","mt1","mt2","mt2","mt2"),N=c("2","3","5","7","9","9"))<br />
> dat2 <- data.frame(M=c("mt1","mt2"),M-se=c(1.8,8),M+se=c(4.8,9))<br />
> dat1<br />
M N<br />
1 mt1 2<br />
2 mt1 3<br />
3 mt1 5<br />
4 mt2 7<br />
5 mt2 9<br />
6 mt2 9<br />
> dat2<br />
M sd1 sd2<br />
1 mt1 1.8 4.8<br />
2 mt2 8.0 9.0</p>
<p>#我想按照mt1的N值对应dat2中mt1的sd1和sd2值,#<br />
#筛选出满足sd1<N<sd2的dat1行,#<br />
#结果应为#</p>
<p>> datnew<br />
M N<br />
1 mt1 2<br />
2 mt1 3<br />
5 mt2 9<br />
6 mt2 9<br />
</p>
#我想按照mt1的N值对应dat2中mt1的sd1和sd2值,#
#筛选出满足sd1<N<sd2的dat1行,#
#结果应为#
不知道为什么“sd1<N<sd2的dat1”在代码框中显示不出来,又复制出来~~~
为什么这样做的原因是:按照[μ﹢3σ,μ-3σ]的范围筛选出源数据中的异常值~~~
如果有更方便的方法和函数,希望大家能多出点主意~~~
我的想法是
<br />
> dat12 <- merge(dat1,dat2)<br />
> dat12<br />
M N sd1 sd2<br />
1 mt1 2 1.8 4.8<br />
2 mt1 3 1.8 4.8<br />
3 mt1 5 1.8 4.8<br />
4 mt2 7 8.0 9.0<br />
5 mt2 9 8.0 9.0<br />
6 mt2 9 8.0 9.0<br />
#这里出现了错误<br />
> dat12[(dat12$N>datp$sd1)&(dat12$N<datp$sd2),]<br />
谢谢大家~~~[s:18]
</p>