感谢堆栈,我能够对这个数据帧进行排序,首先是根据“状态”,然后是“ID”,它看起来像:
>pheno
ID status
1 patient19 0
2 patient21 0
3 patient7 1
4 patient10 1
(制作现象的代码):
ID = c("patient19", "patient21", "patient7", "patient10")
pheno = as.data.frame(ID)
pheno$status = c("0", "0", "1", "1")
row.names(phenodf) = pheno$ID
但现在我有了第二个数据框,其中ID现在是列标题,需要对它们进行排序,使其与pheno df中的顺序相匹配。我怎么能这样做?
>genes
gene patient7 patient21 patient19 patient10
ABC 1.5 2.3 3.3 4.4
A2B 2.5 1.3 3.1 2.3
DE5 3.5 3.3 3.4 1.4
ZXY 4.5 4.3 3.6 5.1
(制作基因df的代码):
patient7 = c(1.5, 2.5, 3.5, 4.5)
genes = as.data.frame(patient7)
genes$patient21 = c(2.3, 1.3, 3.3, 4.3)
genes$patient19 = c(3.3, 3.1, 3.4, 3.6)
genes$patient10 = c(4.4, 2.3, 1.4, 5.1)
row.names(genes) = c("ABC", "A2B", "DE5", "ZXY")
这就是我需要基因df的样子:
genes patient19 patient21 patient7 patient10
ABC 3.3 2.3 1.5 4.4
A2B 3.1 1.3 2.5 2.3
DE5 3.4 3.3 3.5 1.4
ZXY 3.6 4.3 4.5 5.1
答案 0 :(得分:0)
您可以使用match
执行此操作,第一个参数是您要重新排序的标签,第二个参数是所需的顺序:
genes[, match(colnames(genes), rownames(pheno))]
仅执行match
的结果是:
3 2 1 4
这就是您需要genes
数据框的列的顺序,与pheno
数据框中的顺序相关。