R中的条件子集基于另一个数据帧中的值

时间:2014-07-11 14:36:05

标签: r subset

我想根据另一个数据框中的值(这是容易的部分)对数据框进行子集化。最重要的是,我想告诉R,如果第二个df中的值超过一定水平,那么子集应该包含第一个df中的所有值。 这是一个满口的,所以这是一个例子:

DF1看起来像这样:

|   date    |  value |
----------------------
| Jul 1     |  1     |
| Jul 2     |  2     |
| Jul 3     |  3     |
| Jul 4     |  4     |

为简单起见,我们假设DF2看起来像这样

value=99
df2<-data.frame(value)

同样,我想告诉R,如果df2中的值大于5,则df1的子集应包含值1,2,3,4。

以下是我正在尝试的不起作用:

subset(df1, value %in% ifelse(df2$value[1]>5, c(1,2,3,4), df2$value[1]))
你能帮忙吗? 另外,如果你能解释为什么上面的代码不起作用,还有其他要点。

干杯!

2 个答案:

答案 0 :(得分:2)

对我来说

subset(df1, value %in% (if (df2$value[1]>99)  c(0,1,2,3) else (df2$value[1])))

做了神奇的事。

答案 1 :(得分:2)

普通的旧if()而不是ifelse()。

例如:

if(F) c(1:4) else 99 # returns 99
if(T) c(1:4) else 99 # returns vector c(1:4)