我有几个数据框。
我需要在一张表中为所有这些数据显示基本统计数据和四分位距 (IQR)。
不幸的是,summary
函数不返回 IQR。另一方面,fivenum
返回 IQR,但不能(?)应用于数据帧列表,我不需要中位数。
由于找不到合适的函数,我自己写了一个如下:
removeXYcol <- function(df)
{
# removes coordinates
drops <- c("X","Y")
withoutXY<- df[,!(names(df) %in% drops)]
withoutXY
}
getStatsTable <- function(listOfDataFrames, df_names = NULL, digits_no = 2)
{
# returns table with statistics (together with IQR which is not returned by summary)
for (df in listOfDataFrames){
df_data <- unlist(removeXYcol(df))
minimum <- round(min(df_data,na.rm = TRUE),digits = digits_no)
maximum <- round(max(df_data, na.rm = TRUE),digits = digits_no)
average <- round(mean(df_data, na.rm = TRUE),digits = digits_no)
IQR_ <- round(IQR(df_data, na.rm = TRUE),digits = digits_no)
toReturn <- c(minimum, maximum, average, IQR_)
if (exists("myStats")) {
myStats <- rbind(myStats, toReturn)
} else {
myStats <- toReturn
}
}
colnames(myStats) <- c("minimum", "maximum", "average", "IQR")
if (is.null(df_names)) {
df_names <- seq(length(listOfDataFrames))
}
rownames(myStats) <- df_names
return(myStats)
}
但是我想知道是否没有更简单的解决方案。