这是我的数据框:
name <- c("P1", "P2", "IndA", "IndB", "IndC", "IndD", "IndE", "IndF", "IndG")
A <- c(1, 3, 1, 2, 2, 5, 5, 1, 4)
B <- c(2, 4, 3, 4, 2, 2, 6, 2, 2)
mydf <- data.frame (name, A, B)
以下说明说明了我想要生成和识别哪种组合是不可能的组合。
每个父母(P1和P2)有两个,可以为他们的孩子(个人)贡献一个。
父母可以拥有相同的内容(例如,在以下示例中为1)并且每次可以贡献一个。
因此,这成为组合游戏,以下组合示例。
倒数相同(正确):1 3与3 1相同
问题是:创建可能的组合并找到那些不能成为组合成员的组合。
name <- c("P1", "P2", "IndA", "IndB", "IndC", "IndD", "IndE", "IndF", "IndG")
A <- c(1, 3, 1, 2, 2, 5, 5, 1, 4)
B <- c(2, 4, 3, 4, 2, 2, 6, 2, 2)
mydf <- data.frame (name, A, B)
name A B
1 P1 1 2
2 P2 3 4
3 IndA 1 3
4 IndB 2 4
5 IndC 2 2
6 IndD 5 2
7 IndE 5 6
8 IndF 1 2
9 IndG 4 2
预期输出:
name A B correct
1 P1 1 2 NA
2 P2 3 4 NA
3 IndA 1 3 TRUE
4 IndB 2 4 TRUE
5 IndC 2 2 FALSE
6 IndD 5 2 FALSE
7 IndE 5 6 FALSE
8 IndF 1 2 FALSE
9 IndG 4 2 TRUE
编辑:用于仔细检查的第二个数据集:
name <- c("P1", "P2", "IndH", "IndI", "IndJ", "IndK")
A <- c(1, 3, 3, 1, 4, 3)
B <- c(1, 4, 3, 1, 1, 5)
mydf2 <- data.frame (name, A, B)
mydf2
name A B Correct
1 P1 1 1 NA
2 P2 3 4 NA
3 IndH 3 3 FALSE
4 IndI 1 1 FALSE
5 IndJ 4 1 TRUE
6 IndK 3 5 FALSE
答案 0 :(得分:1)
类似
dum.match<-rbind(expand.grid(c(mydf[1,2:3]),c(mydf[2,2:3])),expand.grid(c(mydf[2,2:3]),c(mydf[1,2:3])))
newmydf<-cbind(mydf,paste(mydf$A,mydf$B)%in%paste(dum.match$Var1,dum.match$Var2))
> newmydf
name A B paste(mydf$A, mydf$B) %in% paste(dum.match$Var1, dum.match$Var2)
1 P1 1 2 FALSE
2 P2 3 4 FALSE
3 IndA 1 3 TRUE
4 IndB 2 4 TRUE
5 IndC 2 2 FALSE
6 IndD 5 2 FALSE
7 IndE 5 6 FALSE
8 IndF 1 2 FALSE
9 IndG 4 2 TRUE
dum.match2<-rbind(expand.grid(c(mydf2[1,2:3]),c(mydf2[2,2:3])),expand.grid(c(mydf2[2,2:3]),c(mydf2[1,2:3])))
newmydf2<-cbind(mydf2,paste(mydf2$A,mydf2$B)%in%paste(dum.match2$Var1,dum.match2$Var2))
> newmydf2
name A B paste(mydf2$A, mydf2$B) %in% paste(dum.match2$Var1, dum.match2$Var2)
1 P1 1 1 FALSE
2 P2 3 4 FALSE
3 IndH 3 3 FALSE
4 IndI 1 1 FALSE
5 IndJ 4 1 TRUE
6 IndK 3 5 FALSE
>