制作特定数据组之间的成对比较列表

问题描述 投票:0回答:1

我有两个看起来像这样的 df:

dat2 <- read.table(text = "
 year  nodepair  `++`  `--`  `+-`  `-+`  `0+`  `+0`  `0-`  `-0`  `00` ES   
1 1999  A1_A1        0     4     0     0     0     0     0     0    16 3    
2 1999  A2_A1        0     0     0     0     0     0     0     0    20 3    
3 1999  A2_A2        0     0     0     0     0     0     0     0    20 4    
4 1999  A3_A1        0     0     0     0     0     2     0     0    18 4    
5 1999  A3_A2        0     0     0     0     0     0     0     0    20 5    
6 1999  A3_A3        0     5     0     0     0     0     0     0    15 5    
", header = TRUE)
dat3 <- read.table(text = "
 year  nodepair  `++`  `--`  `+-`  `-+`  `0+`  `+0`  `0-`  `-0`  `00` ES   
1 1999  A1_A1        0     4     0     0     0     0     0     0    16 8    
2 1999  A2_A1        0     0     0     0     0     0     0     0    20 8    
3 1999  A2_A2        0     0     0     0     0     0     0     0    20 9    
4 1999  A3_A1        0     0     0     0     0     2     0     0    18 9    
5 1999  A3_A2        0     0     0     0     0     0     0     0    20 10    
6 1999  A3_A3        0     5     0     0     0     0     0     0    15 10    
", header = TRUE)

我正在编写一个使用成对列表来比较 ES 组之间的代码。在我能够成功地将它们放在一起并使用以下方法制作所有组合的成对列表之前:

dat4 <- rbind(dat2,dat3)
ES_combs <- combn(unique(dat4$ES), 2, simplify = FALSE)

但是这次我需要在这两组不同的 ES 之间制作一个成对列表来创建我的新函数。所以 3-8、3-9、3-10、4-8... 等不在集合内(不是 3-4、4-5)。

r list comparison pairwise combn
1个回答
0
投票

我想你正在寻找

> x = expand.grid(unique(dat2$ES), unique(dat3$ES))
> x = x[order(x$Var1), ]
> paste0(x$Var1, "-", x$Var2)
[1] "3-8"  "3-9"  "3-10" "4-8"  "4-9"  "4-10" "5-8"  "5-9"  "5-10"

这是@CPB评论的延伸。

© www.soinside.com 2019 - 2024. All rights reserved.