如何将R中一个data.frame的两列与另一个data.frame的一个特定列进行比较?

如何将R中一个data.frame的两列与另一个data.frame的一个特定列进行比较?,r,R,背景: #Data.frame1 COMPANIES comp1 <- c("C","A","B","B","A") comp2 <- c("A","A","C","C","C") comp3 <- c("C","B","B","A","A") comp4 <- c("C","C","A","A","A") dfcomp <- data.frame(comp1, comp2, comp3, comp4) #Data.frame2

背景:

  #Data.frame1 COMPANIES

  comp1 <- c("C","A","B","B","A")
  comp2 <- c("A","A","C","C","C")
  comp3 <- c("C","B","B","A","A")
  comp4 <- c("C","C","A","A","A")



  dfcomp <- data.frame(comp1, comp2, comp3, comp4)

  #Data.frame2 INDEX

   index1 <- c("A","B","C","C","C")

   dfindex <- data.frame(index1)
  V1    V2      val
1 comp1 comp2     0
2 comp1 comp3     2
3 comp1 comp4     2
4 comp2 comp3     0
5 comp2 comp4     0
6 comp3 comp4     3
dfcomp <- structure(list(comp1 = structure(c(3L, 1L, 2L, 2L, 1L), .Label = c("A", 
"B", "C"), class = "factor"), comp2 = structure(c(1L, 1L, 2L, 
2L, 2L), .Label = c("A", "C"), class = "factor"), comp3 = structure(c(3L, 
2L, 2L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"), comp4 = structure(c(2L, 2L, 1L, 1L, 1L), .Label = c("A", "C"), class = "factor")), .Names = c("comp1", "comp2", "comp3", 
"comp4"), row.names = c(NA, -5L), class = "data.frame")

dfindex <- structure(list(index1 = structure(c(1L, 2L, 3L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor")), .Names = "index1", row.names = c(NA, 
-5L), class = "data.frame")
我有两个data.Frame,一个有多家公司,另一个有一个索引

我试图计算这两个条件何时满足:

第一个条件:两个公司向前移动(仅当A=A或C=C时)

第二种情况:指数显示相反方向,当公司显示A=A时,指数显示C,或当公司显示C=C时,指数显示A

示例:第1列-Comp1(C)Comp3(C)和第1列-index1(A)| COUNT=1

         [12i] [13i] [14i] [23i] [24i] [34i]
     [1]   0     2     2     0     0     3 
这6对是Comp1和Comp2、Comp1和Comp3、Comp1和Comp4、Comp2和Comp3、Comp2和Comp4以及Comp3和Comp4,加上每对的索引

不知道哪个函数可以帮我解决这个问题

数据帧代码:

  #Data.frame1 COMPANIES

  comp1 <- c("C","A","B","B","A")
  comp2 <- c("A","A","C","C","C")
  comp3 <- c("C","B","B","A","A")
  comp4 <- c("C","C","A","A","A")



  dfcomp <- data.frame(comp1, comp2, comp3, comp4)

  #Data.frame2 INDEX

   index1 <- c("A","B","C","C","C")

   dfindex <- data.frame(index1)
  V1    V2      val
1 comp1 comp2     0
2 comp1 comp3     2
3 comp1 comp4     2
4 comp2 comp3     0
5 comp2 comp4     0
6 comp3 comp4     3
dfcomp <- structure(list(comp1 = structure(c(3L, 1L, 2L, 2L, 1L), .Label = c("A", 
"B", "C"), class = "factor"), comp2 = structure(c(1L, 1L, 2L, 
2L, 2L), .Label = c("A", "C"), class = "factor"), comp3 = structure(c(3L, 
2L, 2L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"), comp4 = structure(c(2L, 2L, 1L, 1L, 1L), .Label = c("A", "C"), class = "factor")), .Names = c("comp1", "comp2", "comp3", 
"comp4"), row.names = c(NA, -5L), class = "data.frame")

dfindex <- structure(list(index1 = structure(c(1L, 2L, 3L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor")), .Names = "index1", row.names = c(NA, 
-5L), class = "data.frame")

其中一种方法可能是

库(dplyr)

comp_func你能更清楚地回答这个问题吗?您的第1点和第2点是要满足的条件还是您操作的假设?您希望获得的最终输出是什么?如果是这样的话,为什么在没有一个输入有6列或6行的情况下会有6个条目?@LukeHayden 1和2conditions@awchisholm因为我们有6对公司:comp1&comp2、comp1&comp3、comp1&comp4、comp2&comp3、comp2&comp4和comp3&comp4。这就像一个矩阵,但我们只考虑它所帮助的有趣的值:)