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,但如果有人告诉我如何执行此操作,我会这样做。

4

2 回答 2

6

您需要按您期望的顺序指定该因子变量的水平。正如您所注意到的,默认值是字典式:

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')
于 2013-02-22T21:16:02.730 回答
6

这里有几点。

首先是在 R 中,诸如因子级别的顺序之类的东西被认为是数据的属性或属性,而不是图形/分析的属性。因此,绘图或分析函数中通常没有用于指定顺序的参数,而是在数据对象本身中指定该顺序,然后所有绘图和分析都使用该顺序。

要更改顺序,您可以使用函数指定所需的顺序factor,或者您可以使用 和 等函数relevelreorder更改因子水平的顺序。如果您希望级别与它们在数据中出现的顺序相同,则该unique函数运行良好。对于混合使用字符和数字进行排序,mixedsortgtools 包中的功能可能很有用。

于 2013-02-22T21:27:10.210 回答