【问题标题】:How to subset and reorder a matrix based on the row names of other matrix如何根据其他矩阵的行名对矩阵进行子集化和重新排序
【发布时间】:2020-09-24 13:58:09
【问题描述】:

我有标记数据(作为矩阵)标记,其中行名是个人的名称,列名是标记的名称。

marker <- 
              BBLM062 BBLM00182 BBLMOO587.......
ALEN294945     AA  AA  AT ....
ALEN29394      AT  AA  TT ....
ALEN49494888   AT  AA  TT ....
ALEN26424      AA  AA  AA ....
ALEN38764      AA  AT  AA ....
ALEN29794      AA  AT  AA ....
......
(282 x 1082)

我有另一个数据集 pheno(也作为矩阵),其中行名是个人名称,列名是特征名称

pheno <-
              height weight colour ......
ALEN26494     162  3.5  3
ALEN49494888  154  3.8  5
ALEN494967    131  4.0  5
ALEN49678     152  3.9  7
ALEN294945    138  4.9  1
.......
(260 x 7)

“pheno”中的所有个体也出现在“marker”中,但顺序不同。我有 3 个问题

  1. 如何根据“pheno”的行名对“marker”进行子集化,或从“marker”中排除“pheno”中不存在的个体;
  2. 如何根据 'marker' 对 'pheno' 中的个体重新排序,反之亦然 (我有来自另一个群体“marker2”的标记数据,其中包含 900 个标记 - 列名是标记名称;
  3. 如何根据 colnames 或 'marker2' 子集 'marker' 并像我们在问题 2 中所做的那样对它们重新排序

提前致谢。

【问题讨论】:

    标签: r sorting matrix subset


    【解决方案1】:

    如果您分享可重复的示例,您将获得更多帮助。您可以使用dput( ) 功能来帮助共享您的数据。

    您可以使用此代码进行子集化:

    marker[row.names(marker) %in% row.names(pheno),]
    

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 2020-11-04
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      相关资源
      最近更新 更多