首页 > 解决方案 > A,C,G,T上的R数据框列顺序

问题描述

我在 R 中有一个这样的数据框:

   V1    V2
1 3289 AAAAA
2 2608 AAAAC
3 1598 AAAAG
4 2857 AAAAT
5 2211 AAACA
6 1349 AAACC

但我希望这个数据框和后续图的顺序(其中 V2 是 x 轴)不是基于 V2 排序的字母顺序,而是基于排序顺序为 A、T、G、C 的 V2 排序。对于例如上面的订单我想是:

   V1    V2
1 3289 AAAAA
2 2857 AAAAT
3 1598 AAAAG
4 2608 AAAAC
5 2211 AAACA
6 1349 AAACC

标签: rggplot2

解决方案


当您考虑它时,如果您将所有 T 替换为 B,并将所有 C 替换为 Z,那么您可以按字母顺序对向量进行排序。之后,您将所有 B 切换回 T 并将 Z 切换回 C:您现在拥有按 A、T、G、C 排序的序列。

一种更简单的方法是df1按替换的 ABGZ 排序字符串进行排序:

df1[order(gsub("T", "B", gsub("C", "Z", df1$V2))),]
    V1    V2
1 3289 AAAAA
2 2857 AAAAT
3 1598 AAAAG
4 2608 AAAAC
5 2211 AAACA
6 1349 AAACC

推荐阅读