由于默认的summary不能满足我的要求,因此我编写了一些代码来创建自己的描述性统计表。

现在,我想创建一个灵活/动态的函数,用可变数量的变量来执行此操作。

我的代码如下所示:

N <- c( length(data1), length(data2), length(data3) )
mean<- c( mean(data1), mean(data2), mean(data3) )
sd <- c( sd(data1), sd(data2), sd(data3) )
min <- c( min(data1), min(data2), min(data3) )
max <- c( max(data1), max(data2), max(data3) )
print(q) <- data.frame(N, mean, sd, min, max)


因此,如果我想描述除3个变量以外的其他内容,则无需编辑此文件,而是需要一个功能类似的函数;

descriptive <- function(data1, ...) {
  N <- c( length(data1), length(...) )
  mean<- c( mean(data1), mean(...) )
  sd <- c( sd(data1), sd(...) )
  min <- c( min(data1), min(...) )
  max <- c( max(data1), max(...) )
  q <- data.frame(N, mean, sd, min, max)
  print(q)
}


我尝试了上面的方法,希望它能起作用,但是它仅适用于两个变量。如您所见,我是R的新手。我试图寻找一种解决方案,但找不到。但是,如果R和“他们”所说的一样好,我认为这样的事情应该是可能的。

可能已经有一个函数可以执行此操作,但是我希望自己能够执行此操作。 (: 希望可以有人帮帮我!

编辑!!

谢谢大家的回答,它们似乎都可以奏效。这表明R中对同一问题有多个答案。我不知道您是否为接受的答案获得分数,并且这是否重要,但是我选择Arun答案,因为它接近于我创建描述性表格的目的是“好看的”和灵活的。

如果以后有人对我感兴趣,可以将其添加到Arun答案中,使其完全适合我的目的;

data <- list(var1, var2 ...)
names <- c"name1", "name2", "...")
descriptive(data)


这种解决方案似乎还具有可变长度与数据帧的变量的优点。

最佳答案

您可以提供list作为函数参数的输入,然后在每个参数上使用sapply以获得每个数据的统计信息。

descriptive <- function(ll) {
    N <- sapply(ll, length)
    mean <- sapply(ll, mean)
    sd <- sapply(ll, sd)
    min <- sapply(ll, min)
    max <- sapply(ll, max)
    print(out <- data.frame(N, mean, sd, min, max))
}

descriptive(list(1:5, 6:10))

  N mean       sd min max
1 5    3 1.581139   1   5
2 5    8 1.581139   6  10


注意:即使您输入的是data.frame,并且您需要data.frame所有列的统计信息(因为它在内部是列表),此方法仍然有效。

descriptive(data.frame(1:5, 6:10))
      N mean       sd min max
X1.5  5    3 1.581139   1   5
X6.10 5    8 1.581139   6  10

08-19 22:15