在R中,我从data.frame中绘制了一个相当大的箱线图,大约有150列。我知道有一些“异常”列,其分布与数据集的其他部分差别太大,我想确切地确定哪些。
毫不奇怪,标签没有足够的空间,即使有,也可能不方便手工检查。所以我认为我可以使用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
意味着没有发现任何一点。
是否有其他解决方案来识别列名(而非单点)?
答案 0 :(得分:1)
这个解决方案看起来有点笨拙,所以可能有更好的解决方案。
设置一些包含三列的示例数据:
TGS = data.frame(A = rnorm(100), B = rnorm(100), C=rnorm(100))
接下来绘制箱线图
boxplot(TGS, outline=F)
现在我们构建identity
函数。
identify(x=rep(1:ncol(TGS), each=nrow(TGS)),
y=as.vector(unlist(TGS)),
label=rep(colnames(TGS), each=nrow(TGS)))
标签是列名。只有在箱线图的中心附近点击时,此功能才有效。
答案 1 :(得分:0)
如果您想获得异常值列表,可以使用boxplot的“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