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

时间:2021-07-12 07:59:47

标签: r function sapply

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

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

生成图像中的表格。simple data 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<- 表$X1,带有 GenStats(x)

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

我试过了 -

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

但这没有用。

然后我尝试使用 sapply 例如

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

这能解决您的问题吗?

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 以将函数应用于您想要的列

答案 1 :(得分:1)

您可以使用 consumer_key = "xxxx" consumer_secret = "xxx" access_key = "xxxxxx" access_secret = "xxxxxxx" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth) 库中的 describe

psych

输出:

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

OR:使用您自己的函数 使用 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 更改为 skew 并且 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)

相关问题