2013-02-22 56 views
2

我已经看了这个主题的两个类似的问题,但没有找到我在两个任何一个寻找答案。 as.table函数改变了从左下开始到左上开始的字母顺序,但对组内的窗格顺序没有任何影响。格点图板的指定顺序

数据(这是我的客户专有的)有站点标识是字母和数字的组合。当所绘制的所有地点组中有一系列首字母相同的网站时,它们按照第一位数进行排序,而不是按照我们人类的计数方式进行排序。例如,SW-1,SW-10,SW-11,SW-2,SW-3。我希望他们的顺序SW-1,SW-2,SW-3,SW-10,SW-11。我使用的代码是:

xyplot(as.d$quant ~ as.d$sampdate | as.d$site, ylim=range(as.d$quant), xlim=range(as.d$sampdate), 
main='Arsenic By Time', ylab='Concentraion (mg/L)', xlab='Time') 

我不知道如何安装导致情节的.PDF,但会做,如果有人给我看如何做到这一点。

+0

通常最好发布PNG版本。当您打开编辑窗口时,会在{}图标右侧出现绿色正方形图标,让您可以从计算机上传文件。 – 2013-02-22 22:14:11

回答

6

您需要在您期望的顺序中指定该因子变量的级别。默认值是lexigraphic为你注意到:基于目前的问题是如何代表

xyplot(as.d$quant ~ as.d$sampdate | factor(as.d$site, 
              levels=1:length(unique(as.d$site))) , 
     ylim=range(as.d$quant), xlim=range(as.d$sampdate), 
     main='Arsenic By Time', ylab='Concentration (mg/L)', xlab='Time') 

,你可能需要:

require(gtools) 
xyplot(as.d$quant ~ as.d$sampdate | factor(as.d$site, 
            levels=mixedsort(as.character(unique(as.d$site)))) , 
     ylim=range(as.d$quant), xlim=range(as.d$sampdate), 
     main='Arsenic By Time', ylab='Concentration (mg/L)', xlab='Time') 
+0

谢谢大卫。现在我将重新排列文本文件中的网站,并将它们重新读入R. – 2013-02-22 21:32:51

+0

是的。并且使用gtools中的'mixedsort'函数。我上面的回答是基于你之前在Rhelp上发布的内容,它与上面显示的不同。 – 2013-02-22 22:03:38

5

有几个点的位置。

首先,在R中,像因子水平的顺序被认为是数据的属性或属性,而不是图/分析的属性。因此,绘图或分析函数中通常没有用于指定顺序的参数,而是在数据对象本身中指定该顺序,然后所有绘图和分析均使用该顺序。

要改变,你可以使用factor函数指定所需的订单的订货,也可以使用功能,如relevelreorder改变的一个因素级别的顺序。如果您希望这些级别与数据中出现的顺序相同,那么unique函数可以正常工作。对于混合字符和数字进行排序,gtools包中的mixedsort函数可能很有用。

+0

谢谢,Greg。现在很明显,您指出我需要在将数据读入R之前对数据进行排序或使用其中一个可用函数。 – 2013-02-22 21:31:57

+2

不完全。排序数据不会做任何事情。你需要重构你的因子变量。 – 2013-02-22 22:15:22