首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保持前一行的数据帧的条件子设置

保持前一行的数据帧的条件子设置
EN

Stack Overflow用户
提问于 2016-05-03 17:05:14
回答 1查看 473关注 0票数 2

我的数据框架如下所示

代码语言:javascript
运行
复制
       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的每一种情况下,但也将前面的行保留在这些情况下。

所以理想情况下,我的输出应该是这样的

代码语言:javascript
运行
复制
      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)),“”)

在本例中的输出如下所示

代码语言:javascript
运行
复制
  [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))

但是这给出了上一篇专栏文章,所以我想知道类似的东西是否能给出前面的行呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-03 17:57:30

如果您的data.frame总是具有交替的结构,如alt_testalt_ref,那么您可以手动构造子集索引如下:

代码语言:javascript
运行
复制
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)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37010186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档