由于默认的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