我有一个数据集,我想在R中按以下方式对其进行排序。我希望我能解释清楚。
按主列中显示的元素排序。这将给我们两个块,一个包含所有As的块和一个包含所有G的块。
然后对于第一个块,移动到-1列位置,并按那里看到的元素排序(有两个元素,C / T)。这会将第一个块分成两个较小的块,一个在主列中为A,在第一列中为C;和一个在主列有A的块,在第一列有T.
对于第二个块,移动到-1列并执行相同操作。我最终将得到两个较小的块,一个在主列上有G,在第一列上有一个C;一个在主列有G,在第-1列有一个。
移至+1列并执行相同操作。在每一步,我将最终将每个现有块分成两个新块。
我不想打破行模式。我想对行进行排序(交换行的排列),但我不会重新排列列。我怎样才能做到这一点?
一个想法:我手工分拣,我得到了正常的分布形状。这就是为什么我给出了通过正态分布函数得到的权重(对于每一列)。之后,我通过使用行和权重之间的相异系数得到加权协方差矩阵(行数x行数)。然后我通过使用相关矩阵的特征向量对数据进行排序,该特征向量具有丢失数据的惩罚。但是我无法达到手工达到的结果。我的数据太大了,但我只分享了一小部分内容。
-7 -6 -5 -4 -3 -2 -1 Main 1 2 3 4
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A T C G C T C G G G T G
A C C A C C T A G A T G
G C T G C T T G G G T G
A C C A C C T G G A T G
G C T G C T T G G G T G
A C C A C C T G G A T G
A C C A C C T G G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T G G G T G
A C C A T C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C G C T T G A G C T
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
A C C A C C T A G A T G
答案 0 :(得分:0)
在我阅读您的查询时,您希望对Main列进行排序,然后在Main的组内对X.1进行排序,然后在X.1的组内对X1进行排序。以下将做到这一点:
library(dplyr)
data.sort <- arrange(data, Main, X.1, X1)
X.7 X.6 X.5 X.4 X.3 X.2 X.1 Main X1 X2 X3 X4
1 A C C A C C T A G A T G
2 A C C A C C T A G A T G
3 A C C A C C T A G A T G
4 A C C A C C T A G A T G
5 A C C A C C T A G A T G
6 A C C A C C T A G A T G
7 A C C A C C T A G A T G
8 A C C A C C T A G A T G
9 A C C A C C T A G A T G
10 A C C A C C T A G A T G
11 A C C A C C T A G A T G
12 A C C A C C T A G A T G
13 A C C A C C T A G A T G
14 A C C A C C T A G A T G
15 A C C A C C T A G A T G
16 A C C A T C T A G A T G
17 A C C A C C T A G A T G
18 A C C A C C T A G A T G
19 A C C A C C T A G A T G
20 A C C A C C T A G A T G
21 A C C A C C T A G A T G
22 A C C A C C T A G A T G
23 A C C A C C T A G A T G
24 A C C A C C T A G A T G
25 A C C A C C T A G A T G
26 A C C A C C T A G A T G
27 A T C G C T C G G G T G
28 A C C G C T T G A G C T
29 G C T G C T T G G G T G
30 A C C A C C T G G A T G
31 G C T G C T T G G G T G
32 A C C A C C T G G A T G
33 A C C A C C T G G A T G
34 A C C A C C T G G G T G
您可以使用desc()
撤消订单,如下所示:
data.sort <- arrange(data, desc(Main), desc(X.1), desc(X1))
N.B。列名称需要设置,没有减号,数字等。