2

在 R 中,我从大约 150 列的 data.frame 中绘制了一个相当大的箱线图。我知道有一些“异常”列的分布与数据集的其余部分相差太大,我想准确地确定哪些列。

毫不奇怪,标签没有足够的空间,即使有,手动检查也可能不方便。所以我想我可以使用 R 的 identify函数来定位有问题的列。然而,这样的函数需要 x 和 y 坐标,到目前为止我无法让它工作。

我试过

boxplot(dd.noctr$TGS, outline=F)
identify(xy.coords(dd.noctr$TGS)$x, y=xy.coords(dd.noctr$TGS)$y)

我的数据在哪里dd.noctr$TGS(矩阵或data.frame),只是为了得到错误

warning: no point within 0.25 inches

意味着没有发现任何点。

是否有替代解决方案来识别列名(不是单点)?

4

2 回答 2

1

这个解决方案似乎有点笨拙,所以可能有更好的解决方案。

  1. 设置一些包含三列的示例数据:

    TGS = data.frame(A = rnorm(100), B = rnorm(100), C=rnorm(100))
    
  2. 接下来绘制箱线图

    boxplot(TGS, outline=F)
    
  3. 现在我们构造identity函数。

    identify(x=rep(1:ncol(TGS), each=nrow(TGS)), 
         y=as.vector(unlist(TGS)), 
         label=rep(colnames(TGS), each=nrow(TGS)))
    

    标签是列名。此功能仅在您单击箱线图中心附近时才有效。

在此处输入图像描述

于 2013-10-01T09:45:00.890 回答
0

如果要获取异常值列表,可以使用箱线图的 'out' 组件。

示例:创建一个数据框:具有一些平均值为 20 的随机值,并添加一些异常值。此代码将显示异常值。

 df1 = data.frame(A = c(rnorm(15,20,3),7,8,35,32))   #15 rnorm and 4 extreme values
 bplot=boxplot(df1)
 bplot$out
于 2014-02-06T04:50:55.687 回答