【发布时间】:2016-07-18 14:17:47
【问题描述】:
我正在尝试创建一个箱线图,其中异常值根据第三个变量而不是行名进行标记。
我的数据如下所示:(现在已编辑为包含多个国家和部门作为因子变量)
country <- c(rep(LETTERS[1:5],2))
sector <- rep(c("one", "two"),5)
set.seed(200)
value <- round(rnorm(10),2)
dat <- data.frame(country,sector,value)
dat
country sector value
1 A one 0.08
2 B two 0.23
3 C one 0.43
4 D two 0.56
5 E one 0.06
6 A two -0.11
7 B one -1.02
8 C two -0.30
9 D one 0.17
10 E 二 1.42
没有标签的箱线图是这样的:
boxplot(value ~ sector, data=dat)
我希望异常点上的标签能够反映变量国家/地区的值。
我在这里发现了一个类似的问题:Labeling outliers on boxplot in R,我正在尝试修改代码如下:
bxpdat <- boxplot(value ~ sector, data=dat)
text(bxpdat$group+0.2,
bxpdat$out,
dat$country[which( dat$value == bxpdat$out, arr.ind=TRUE)[, 1]])
但是我似乎做错了什么,因为这不起作用。我将不胜感激有关如何修复此代码的建议,
提前致谢!
【问题讨论】:
-
您好,非常感谢您的回复!它确实适用于我在此处提供的示例数据,但是在我的真实数据上它不起作用......也许这是因为原始数据有更多的国家。例如,当我尝试使用您提供的代码将变量 country 定义为
country <- c(rep(LETTERS[1:5],2))时,它为两种情况编写了相同的标签... -
您尝试过@MichaelChirico 解决方案吗?这也应该适用于您的真实数据