2016-12-18 2 views
0

Предположим, что у меня есть кадр данных. Я сделал цикл for, чтобы построить весь блокплотмент набора данных качества воздуха.Вычисление значений квантов в ящике в R внутри цикла for

name <- names(airquality) 

classes<-sapply(airquality,class) 

airquality[is.na(airquality)] <- 0 

for (name in name[classes == 'numeric']) { 
    boxplot(airquality[,name]) 
} 

Теперь я хочу, чтобы отобразить все значения квантилей, т.е. первый квантиль, медиана, третий квантиль и означают, как показано на рисунке ниже. Я много искал в Интернете, но не нашел ничего, что соответствовало моей потребности. Ниже желаемый график, который я хочу построить:

enter image description here

ответ

2

Вот пример, только с помощью атрибута «Wind».

B = boxplot(airquality[,"Wind"]) 
text(1.3, B$stats, B$stats) 

IQR = B$stats[4] - B$stats[2] 
segments(0.5, c(B$stats[2], B$stats[4]), 0.7, c(B$stats[2], B$stats[4])) 
text(0.6, B$stats[3], IQR) 
arrows(0.6, B$stats[3]+0.5, 0.6, B$stats[4]-0.1, 0.1) 
arrows(0.6, B$stats[3]-0.5, 0.6, B$stats[2]+0.1, 0.1) 

Boxplot of wind

1

С код:

name <- names(airquality) 
classes<-sapply(airquality,class) 
airquality[is.na(airquality)] <- 0 
for (name in name[classes == 'numeric']) { 
    boxplot(airquality[,name]) 
    text(x=1.25,y=fivenum(airquality[,name]), labels =fivenum(airquality[,name])) 
    text(x=0.75,y=median(airquality[,name]), labels=IQR(airquality[,name])) 
    arrows(0.77, fivenum(airquality[,name])[2], 0.77, fivenum(airquality[,name])[4], angle= 90 ,length=0.07,code=3) 
} 

Сюжет здесь, в этой ссылке: Boxplot with IQR rule

Смежные вопросы