Boxplot标签中包含R中非缺失值的数量

时间:2014-05-05 12:44:00

标签: r count label boxplot counting

我有几列(在数据框中)并使用此命令对它们进行箱形图绘制:

boxplot(allm, las=2)

一切都好,但我希望在标签中加入每列中有多少次非遗漏观察(在这种情况下是数值,因为我也有NA)。

用于绘制箱线图的数据框如下所示:

NE001710    NE001360    NE001398    NE001380    NE001707
-0.12        -0.61       -0.61        -0.02       0.13
-0.58        -0.43       -0.24        -0.27      -0.47
  NA          0.19       -0.37        -0.14      -0.53
  NA         -0.13       -0.27        -0.38       0.05
  NA          NA          0.32        -0.34       0.01

盒子图的所需标签必须类似于NE001710(2)NE0011360(4) ... NE001707(5)

2 个答案:

答案 0 :(得分:2)

尝试使用sprintf功能(或paste或其他允许您在调用boxplot之前创建一组标签的功能。)

示例性数据:

data <- data.frame(v1=runif(5), v2=runif(5), v3=runif(5))
data[1,1] <- NA
data[1,2] <- NA
data[2,1] <- NA
data
##          v1         v2        v3
## 1        NA         NA 0.3031038
## 2        NA 0.99395272 0.9481445
## 3 0.4596111 0.17398552 0.6135870
## 4 0.9175369 0.02094728 0.7256759
## 5 0.1932377 0.71577514 0.8811639

使用sprintf生成标签 - 将列名称和NA数量合并为一个字符串:

(nam <- sprintf("%s (%d)",
                   colnames(data),
                   apply(data, 2, function(d) sum(!is.na(d)))
))
## "v1 (3)" "v2 (4)" "v3 (5)"

绘制:

boxplot(data, names=nam)

答案 1 :(得分:1)

您可以使用以下代码更改列的名称:

for(i in c(1:length(allm))){
colnames(allm)[i]<-paste(colnames(allm)[i],"(", sum(!is.na(allm[,i])),")", sep="")
}