我有几列(在数据框中)并使用此命令对它们进行箱形图绘制:
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)
答案 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="")
}