2011-01-14 32 views
2

我有一个数据矩阵(带有行名和列名)。我想做一个每个数据列的点阵图,数据按照每个图表从大到小的顺序排列,然后将这些图放在图中的另一个上面。分割矩阵的列,对每个矩阵进行排序,然后在图中进行布局

举例来说,如果我有以下矩阵:

> X 
    W X Y  Z 
A 11.7 8.7 15.4 100.0 
B 18.1 11.7 9.0 13.6 
C 10.0 20.3 37.0 19.3 
D 41.0 30.9 20.0 35.1 
E 66.0 3.0 71.1 50.0 

我想要做四个dotcharts(列 “W”, “X”, “Y”, “Z”),与数据整理从每个图表的最大到最小,以及排列在另一个之上的图表。

(注意:dotchart(X)不会起作用,因为那种会为每列不同,请参阅question 4654181

什么是R命令,将允许我这样做的序列?

回答

6
apply(X, 2, sort) 
     W X Y  Z 
[1,] 10.0 3.0 9.0 13.6 
[2,] 11.7 8.7 15.4 19.3 
[3,] 18.1 11.7 20.0 35.1 
[4,] 41.0 20.3 37.0 50.0 
[5,] 66.0 30.9 71.1 100.0 

dotchart(apply(X, 2, sort)) 

alt text

编辑:要添加的标签正确排序,您需要使用的列值编列上的名称(),然后顺序():

dotchart(apply(X, 2, sort), 
     labels=apply(X, 2, function(x) names(x)[order(x)]) 
     ) 

alt text

+0

这是非常接近的,除了行标签(“A”,“B”,“C”,“D”,“E”)已被丢弃,所以没有办法做旧标签之间的映射“A”,“B”,“C”,“D”,“E”)和th新映射(“1”,“2”,“3”,“4”,“5”),因为映射从一个组变为另一个。有没有办法在不丢弃原始行标签的情况下生成类似外观的情节? –

+0

@lorin:你来了。 –

+0

完美,这正是我所寻找的。 –

相关问题