这是我想要做的:我有一个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。
有关这是什么意思的任何线索?
答案 0 :(得分: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轴的刻度上的名称是正确的,没有进一步的麻烦。
答案 1 :(得分:0)
不知道为什么它看起来“糟糕”,但订单错误,因为您使用order
代替rank
来查找索引。对于其他问题,您可能需要制作reproducible example。
答案 2 :(得分: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")