按R中列的相似性对数据行进行排序

时间:2018-01-30 16:44:16

标签: r statistics genetic

我有一个数据集,我想在R中按以下方式对其进行排序。我希望我能解释清楚。

  1. 按主列中显示的元素排序。这将给我们两个块,一个包含所有As的块和一个包含所有G的块。

  2. 然后对于第一个块,移动到-1列位置,并按那里看到的元素排序(有两个元素,C / T)。这会将第一个块分成两个较小的块,一个在主列中为A,在第一列中为C;和一个在主列有A的块,在第一列有T.

  3. 对于第二个块,移动到-1列并执行相同操作。我最终将得到两个较小的块,一个在主列上有G,在第一列上有一个C;一个在主列有G,在第-1列有一个。

  4. 移至+1列并执行相同操作。在每一步,我将最终将每个现有块分成两个新块。

  5. 我不想打破行模式。我想对行进行排序(交换行的排列),但我不会重新排列列。我怎样才能做到这一点?

    一个想法:我手工分拣,我得到了正常的分布形状。这就是为什么我给出了通过正态分布函数得到的权重(对于每一列)。之后,我通过使用行和权重之间的相异系数得到加权协方差矩阵(行数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
    

1 个答案:

答案 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。列名称需要设置,没有减号,数字等。