如何将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。这就像一个矩阵,但我们只考虑它所帮助的有趣的值:)