0

这是我想做的事情:我有一个 160 行的 data.frame(数据),有 2 个变量(事实(8 组)和响应),我想做一个响应的箱线图 ~ 事实,按递增顺序排列中位数。

代码 :

data <- read.table("box.txt",header=T)

attach(data)

index <- order(tapply(response,fact,median))

ordered <- factor(rep(index,rep(20,8)))

boxplot(response~ordered,notch=T,names=as.character(index),xlab="treatments",ylab="response")

但是在图形上,这些框的绘制很糟糕(顺序不正确,并且带有“假” Min、Max 等...)。

我在 Windows 7 上使用 RStudio 和 R 3.0.2。

关于这意味着什么的任何线索?

4

3 回答 3

2

一个可重现且看似正确的答案是:

set.seed(1)
data <- data.frame(response=10*rnorm(160), fact=factor(rep(1:8), labels=letters[1:8]))
data$fact <- reorder(data$fact, data$response, median)
boxplot(response~fact, data=data, notch=TRUE, xlab="treatments", ylab="response")

x 轴刻度上的名称是正确的,不用多说。

于 2013-10-31T14:21:55.330 回答
0

可重现的示例如下,有两个箱线图进行比较。就我而言,由于魔鬼的耳朵,情节(可能)看起来很糟糕。关于OP的问题,我将他的措辞解释为不好,指的是使用order()而不是rank()导致其他事故的事实(尽管我不知道为什么)。

data <- data.frame(response=rnorm(160), fact=factor(rep(1:8), labels=letters[1:8]))
boxplot(response~fact, data=data, notch=TRUE, xlab="treatments", ylab="response")

data$ordered <- rank(tapply(data$response, data$fact, median))
boxplot(response~ordered, data=data, notch=TRUE, xlab="treatments", ylab="response")
于 2013-10-30T11:00:58.737 回答
0

不知道为什么它看起来“不好”,但顺序是错误的,因为您使用order而不是rank查找索引。对于其他问题,您可能必须制作一个可重现的示例

于 2013-10-30T09:26:02.873 回答