我想根据另一个数据框中的值(这是容易的部分)对数据框进行子集化。最重要的是,我想告诉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]))
你能帮忙吗?
另外,如果你能解释为什么上面的代码不起作用,还有其他要点。
干杯!
答案 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)