我有一个这样的数据集:
Tab1 <- read.table(text = "
nodepair ES1 ++ -- +- -+ 0+ +0 0- -0 00 ES2
1 A1_A1 3 0 4 0 0 0 0 0 0 16 4
2 A1_A1 3 0 4 0 0 0 0 0 0 16 5
3 A1_A1 4 0 5 0 0 0 0 0 0 16 3
4 A1_A1 4 0 5 0 0 0 0 0 0 16 5
5 A1_A1 5 0 5 0 0 0 0 0 0 15 3
6 A1_A1 5 0 5 0 0 0 0 0 0 15 4
7 A2_A1 3 0 0 0 0 0 0 0 0 20 4
8 A2_A1 3 0 0 0 0 0 0 0 0 20 5
9 A2_A1 4 0 0 0 0 0 0 0 0 21 5
10 A2_A1 4 0 0 0 0 0 0 0 0 21 3
11 A2_A1 5 0 0 0 0 0 0 0 0 20 4
12 A2_A1 5 0 0 0 0 0 0 0 0 20 3
", header = TRUE)
我需要首先按节点对排序,然后按 ES1 和 ES2 排序,以便每个 ES1 和 ES2 的镜像组合排序如下:
Tab2 <- read.table(text = "
nodepair ES1 ++ -- +- -+ 0+ +0 0- -0 00 ES2
1 A1_A1 3 0 4 0 0 0 0 0 0 16 4
3 A1_A1 4 0 5 0 0 0 0 0 0 16 3
2 A1_A1 3 0 4 0 0 0 0 0 0 16 5
5 A1_A1 5 0 5 0 0 0 0 0 0 15 3
4 A1_A1 4 0 5 0 0 0 0 0 0 16 5
6 A1_A1 5 0 5 0 0 0 0 0 0 15 4
7 A2_A1 3 0 0 0 0 0 0 0 0 20 4
10 A2_A1 4 0 0 0 0 0 0 0 0 21 3
8 A2_A1 3 0 0 0 0 0 0 0 0 20 5
12 A2_A1 5 0 0 0 0 0 0 0 0 20 3
9 A2_A1 4 0 0 0 0 0 0 0 0 21 5
11 A2_A1 5 0 0 0 0 0 0 0 0 20 4
", header = TRUE)
我尝试过各种版本的排列和分组依据,但似乎无法破解它
它需要更多的深入研究,而不是按节点对排序,然后按 ES1 和 ES2 排序。我能得到的最接近的是使用 ES1 和 ES2 中较小的一个来创建 ES3 列,然后按节点对和 ES3 排序。
library(dplyr)
Tab1 |>
mutate(ES3=ifelse(ES1<ES2,ES1,ES2)) |>
arrange(nodepair,ES3)