我将发布一个通过向量返回多个对象的函数:
Median <- function(X){
X_Sort <- sort(X)
if (length(X)%%2==0){
Median <- (X_Sort[(length(X)/2)]+X_Sort[(length(X)/2)+1])/2
} else{
Median <- X_Sort[(length(X)+1)/2]
}
return(Median)
}
那是我创建的用于计算中位数的函数。我知道在 R 中有一个内置函数被调用median()
,但是我编写了它来构建其他函数,使用Median()
我刚刚编写的函数来计算数字数据集的四分位数。该Median()
函数的工作原理如下:
- 如果数值向量
X
具有偶数个元素(即),则通过对元素和length(X)%%2==0
求平均值来计算中位数。sort(X)[length(X)/2]
sort(X)[(length(X)/2+1)]
- 如果
X
没有偶数个元素,则中位数为sort(X)[(length(X)+1)/2]
。
到QuartilesFunction()
:
QuartilesFunction <- function(X){
X_Sort <- sort(X) # Data is sorted in ascending order
if (length(X)%%2==0){
# Data number is even
HalfDN <- X_Sort[1:(length(X)/2)]
HalfUP <- X_Sort[((length(X)/2)+1):length(X)]
QL <- Median(HalfDN)
QU <- Median(HalfUP)
QL1 <- QL
QL2 <- QL
QU1 <- QU
QU2 <- QU
QL3 <- QL
QU3 <- QU
Quartiles <- c(QL1,QU1,QL2,QU2,QL3,QU3)
names(Quartiles) = c("QL (1)", "QU (1)", "QL (2)", "QU (2)","QL (3)", "QU (3)")
} else{ # Data number is odd
# Including the median
Half1DN <- X_Sort[1:((length(X)+1)/2)]
Half1UP <- X_Sort[(((length(X)+1)/2)):length(X)]
QL1 <- Median(Half1DN)
QU1 <- Median(Half1UP)
# Not including the median
Half2DN <- X_Sort[1:(((length(X)+1)/2)-1)]
Half2UP <- X_Sort[(((length(X)+1)/2)+1):length(X)]
QL2 <- Median(Half2DN)
QU2 <- Median(Half2UP)
# Methods (1) and (2) averaged
QL3 <- (QL1+QL2)/2
QU3 <- (QU1+QU2)/2
Quartiles <- c(QL1,QU1,QL2,QU2,QL3,QU3)
names(Quartiles) = c("QL (1)", "QU (1)", "QL (2)", "QU (2)","QL (3)", "QU (3)")
}
return(Quartiles)
}
此函数使用三种方法返回数值向量的四分位数:
X
当数值向量的元素个数为奇数时,放弃计算四分位数的中位数。
- 当数值向量的元素数
X
为奇数时,保留中位数以计算四分位数。
- 平均使用方法 1 和 2 获得的结果。
当数值向量中的元素个数X
为偶数时,三种方法重合。
的结果QuartilesFunction()
是一个向量,该向量描述了使用概述的三种方法计算的第一和第三四分位数。