我有一个这样的数据集:

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)

我需要首先按 node 对进行排序,然后同时按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)

我try 了不同版本的排列和分组方式,但似乎无法破解它

推荐答案

dplyr

这是另一个使用dplyr和if的解决方案

library(dplyr)
Tab1 %>%
  mutate(ES3=ifelse(ES1<ES2,paste(ES1,ES2,sep=','),paste(ES2,ES1,sep=','))) %>% 
  arrange(nodepair,ES3)

R相关问答推荐

以R为基数排列奇数个图

R箱形图gplot 2 4组但6个参数

从BRM预测价值

在数组索引上复制矩阵时出错

如何使用tryCatch执行语句并忽略警告?

使用rest从header(h2,h3,table)提取分层信息

在另一个包中设置断点&S R函数

R中时间间隔的大向量与参考时间间隔的相交

SHILINY中DT列的条件着色

R仅当存在列时才发生变异

构建一个6/49彩票模拟系统

随机将数据帧中特定列上的某些行设置为NA

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

在不重复主题的情况下重新排列组

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

附加中缀操作符

如何在shiny 的应用程序 map 视图宣传单中可视化单点

在shiny 表格中输入的文本在第一次后未更新

使用一个标签共享多个组图图例符号

在直方图中显示两个变量