R - 根据来自另一个数据帧的条件子集数据帧

时间:2017-06-08 16:52:15

标签: r if-statement merge subset

我有一个与this帖子有些相似的问题,但由于条件略有变化,它对我不起作用。

我有2个数据框,如下所示:

> effect
  V1        V2 V3
1 G1 activates G2
2 G3     stops G4
3 G5 activates G6
4 G6     stops G7

> expression
  V1 V2
1 G1  1
2 G2  0
3 G3  1
4 G4  0
5 G5  1
6 G6  1
7 G7  1

我想只保留符合以下条件的effect数据框中的那些行:

  • 如果effect$V2 == activatesexpression$V2应为1 effect$V3expression$V1相同

  • 如果effect$V2 == stops,那么expression$V2应为0 effect$V3expression$V1相同

根据这个标准,我会得到这个结果:

> results
  V1        V2 V3
1 G3     stops G4
2 G5 activates G6

因为这与给定条件一致,因此对于第一行,V2=stops的{​​{1}}和expression$V2G4

同样,对于0的第2行V2=activatesexpression$V2G6

数据帧的结构如下。任何帮助将不胜感激。

DF1:

1

DF2:

structure(list(V1 = structure(1:4, .Label = c("G1", "G3", "G5", 
"G6"), class = "factor"), V2 = structure(c(1L, 2L, 1L, 2L), .Label = c("activates", 
"stops"), class = "factor"), V3 = structure(1:4, .Label = c("G2", 
"G4", "G6", "G7"), class = "factor")), .Names = c("V1", "V2", 
"V3"), class = "data.frame", row.names = c(NA, -4L))

1 个答案:

答案 0 :(得分:0)

我已经找到了答案。它是:

POST