重复函数以查找多个数据列的描述性统计信息

Repeat function to find descriptive statistics for several data columns

正在尝试做重复函数和描述性统计。下面一行

print (table <- data.frame(replicate(5,sample(50:100,10,rep=TRUE))))

生成图像中的table。

我想使用下面的编码对 X1 和 X4 列进行一些描述性统计。

GenStats <- function(x){
  newMatrix <- matrix (1:8, nrow = 1)
  colnames(newMatrix) <- c("Mean", "Median", "Maximum", "Variance", "Minimum", "Skewness",
                           "Kurtosis", "Std.Dev")
  rownames(newMatrix) <- "Key Statistics" 
  newMatrix[1,] <- c(mean(x), median(x), max(x), var(x), min(x),
                     skewness(x), kurtosis(x), sd(x))
  newMatrix
}

我可以让它为 1 个样本工作,例如

x<- table$X1,带 GenStats(x)

那么我的问题 - 我如何查看两个样本(独立处理),例如X1 和 X4?

我试过了 -

x <- c("table$X1", "table$X4")

但这没有用。

然后我尝试使用 sapply,例如

sapply(x, function(x) {
  + (x[, c(mean, median, sd)])
  + }) 

但错误消息中出现意外的“}”。

一如既往,如果有人能指导我,我将不胜感激。

提前致谢。

这是否解决了您的问题?

library(dplyr)
output <- sapply(table %>% select(X1,X4), FUN = GenStats)
rownames(output) <- c("Mean", "Median", "Maximum", "Variance", "Minimum", "Skewness",
                      "Kurtosis", "Std.Dev")
output
                  X1           X4
Mean      78.9000000  76.10000000
Median    84.0000000  74.50000000
Maximum   96.0000000  95.00000000
Variance 286.9888889 222.54444444
Minimum   52.0000000  53.00000000
Skewness  -0.4325578  -0.03126238
Kurtosis  -1.5714491  -1.59510245
Std.Dev   16.9407464  14.91792360

编辑:您可以替换第一行中的 X1 和 X4 以将函数应用于您想要的列

您可以使用 psych 库中的 describe

library(psych)
describe(table[,c("X1", "X4")])

输出:

   vars  n mean    sd median trimmed   mad min max range skew kurtosis   se
X1    1 10 67.2 16.61   61.5   65.25 14.83  50 100    50 0.64    -1.08 5.25
X4    2 10 72.6 15.92   73.0   72.62 22.24  53  92    39 0.00    -1.90 5.03

或者:使用你自己的函数 使用 lapply 通知 skewness 更改为倾斜并且 kurtosis 更改为 kurtosi

library(psych)
GenStats <- function(x){
    newMatrix <- matrix (1:8, nrow = 1)
    colnames(newMatrix) <- c("Mean", "Median", "Maximum", "Variance", "Minimum", "Skewness",
                             "Kurtosis", "Std.Dev")
    rownames(newMatrix) <- "Key Statistics" 
    newMatrix[1,] <- c(mean(x), median(x), max(x), var(x), min(x),
                       skew(x), kurtosi(x), sd(x))
    newMatrix
}

lapply(table[,c(1,4)], GenStats)

输出:

$X1
               Mean Median Maximum Variance Minimum  Skewness  Kurtosis  Std.Dev
Key Statistics 67.2   61.5     100 275.9556      50 0.6432985 -1.079559 16.61191

$X4
               Mean Median Maximum Variance Minimum    Skewness Kurtosis  Std.Dev
Key Statistics 72.6     73      92 253.3778      53 0.004540284 -1.90361 15.91784