如何在R工作中“重新排序”?

时间:2013-01-21 00:13:38

标签: r

以下代码中boxplot的第一个参数中的公式如何在重新排序之后使b和a之间的正确对应。

a <- as.factor(c("TX", "NY", "WA"))
levels(a)
b <- c(5, 3, 2)
boxplot(b ~ a)
# Order the levels of a according to their value in b
a_reordered <- reorder(a, b)
levels(a_reordered)
boxplot(b ~ a_reordered)

为什么不需要重新排序?

编辑:我用@Marius的具体例子取代了我的例子

1 个答案:

答案 0 :(得分:4)

boxplot(quantity ~ bymedian)调用中,x轴上的状态顺序由bymedian因子的级别顺序决定。将levels(x$State)levels(bymedian)进行比较,您会看到为什么这两个变量在绘图中使用时表现不同。请注意,bymedian中的数据本身并没有改变顺序。

一个简单的例子:

a <- as.factor(c("TX", "NY", "WA"))
levels(a)
b <- c(5, 3, 2)
boxplot(b ~ a)
# Order the levels of a according to their value in b
a_reordered <- reorder(a, b)
levels(a_reordered)
boxplot(b ~ a_reordered)

只是为了说明实际的数据没有改变意味着什么:

> a
[1] TX NY WA
Levels: NY TX WA
> a_reordered
[1] TX NY WA
# Don't be confused by this extra attr(, "scores") bit: the line
# above is the actual data stored in the vector
#attr(,"scores")
#NY TX WA 
# 3  5  2 
Levels: WA NY TX
> b
[1] 5 3 2