我的数据框架如下所示
Model w0 p0 w1 p1 w2 p.value
1 Null_model 3.950000e-05 0.7366921 0.988374029 0.000000e+00 1.296464
2 alt_test 1.366006e-02 0.4673263 0.139606503 3.049244e-01 1.146653
3 alt_ref 2.000000e-07 0.4673263 0.000846849 3.049244e-01 1.635038 5.550000e-15
8 Null_model 2.790000e-05 0.7240479 0.987016439 0.000000e+00 1.263556
9 alt_test 7.550000e-09 0.7231176 0.991768899 1.060000e-13 1.369259
10 alt_ref 2.770000e-05 0.7231176 0.995373167 1.060000e-13 1.192839 3.073496e-01
... ... ... ... ... ... ...我想要的是对我的data.frame进行子集,使其保持在p.value < 0.05的每一种情况下,但也将前面的行保留在这些情况下。
所以理想情况下,我的输出应该是这样的
Model w0 w1 w2
2 alt_test 1.4e-0.2 0.139606503 1.146653
3 alt_ref 2.00e-07 0.000846849 1.635038我试过以下几种方法,但效果不太好:
子集(v,p.value <0.0 5,select = c(Model,w0,w1,w2))
输出没有alt_test行。
我也试过
with(v,ifelse(p.value <0.0 5),lag(dplyr:滞后(c(w0,w1,w2),1)),“”)
在本例中的输出如下所示
[1] NA NA NA NA "0.013660056" NA NA NA NA ""
[11] NA NA NA NA "" NA NA NA NA ""
[21] NA NA NA NA "" NA NA NA NA ""
[31] NA NA NA NA "" NA NA NA NA ""
[41] NA NA NA NA "" NA NA NA NA ""
[51] NA NA NA NA "1.34e-11" NA NA NA NA "" ... 我也试过
子集(v,p.value <0.0 5,选择= c(w0,w1,w2,w0-1,w1-1,w2-1))
但是这给出了上一篇专栏文章,所以我想知道类似的东西是否能给出前面的行呢?
谢谢
发布于 2016-05-03 17:57:30
如果您的data.frame总是具有交替的结构,如alt_test和alt_ref,那么您可以手动构造子集索引如下:
library(data.table)
setDT(myDf)
myDf[Reduce(function(x,y) ifelse(!is.na(x), x, ifelse(!is.na(y), y, F)),
shift(p.Value < 0.05, n = 0:1, type = "lead")), .(Model,w0,w1,w2)]https://stackoverflow.com/questions/37010186
复制相似问题