4

我对R很陌生,所以请耐心等待这个基本问题。我有一个使用 data.table 包创建的数据集 DATA。我在 0 和 1 之间创建了 200 个随机数,然后做了 10000 次,最后为每次迭代创建了一个带有描述性统计的数据表。我的代码如下所示:

rndm<-runif(200, min=0, max=1)
reps <- data.table(x=runif(200*10000),iter=rep(1:200,each=10000))
DATA <- reps[,list(mean=mean(rndm),median=median(rndm),sd=sd(rndm),min=min(rndm),
max=max(rndm)),by=iter]

数据看起来像这样:

    Mean    Median     SD    Min    Max
1   0.521    0.499   0.287  0.010  0.998
2   0.511    0.502   0.290  0.009  0.996
.    ...     ... 

等等

我想要做的是创建一个表来查找累积样本均值的N、均值、中值、标准差、最小值和最大值(而不是像上面那样的每一列)。我需要输出看起来像这样:

   N     Mean   Median    SD    Min    Max
 10000  .502     .499    .280  .002   .999

我怎样才能做到这一点?

4

2 回答 2

7

您还可以定义一个函数。这种方法允许您为不同的变量制作同一张表。

summaryfun <- function(x)list(N=length(x),Mean=mean(x),Median=median(x),SD=sd(x),Min=min(x),Max=max(x))
DATA[,summaryfun(mean)]
于 2013-05-02T16:13:47.600 回答
4

目前,您正在为每个不同的项目分别计算列表中的函数iter。但是,如果您想要聚合统计信息,只需删除该by子句,您的函数将在整个数据集上运行一次。然后添加一个项目来给予N- 利用.Ndata.table 提供的变量。

DATA <- reps[, list(N=.N, mean=mean(rndm), median=median(rndm), 
                    sd=sd(rndm), min=min(rndm), max=max(rndm))]
于 2013-05-02T16:31:49.050 回答