我对 R 非常陌生,所以请在这个基本问题上向我承担责任。 我有一个数据集DATA,我使用data.table包创建。我在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)。我需要输出看起来像这样:
N Mean Median SD Min Max
10000 .502 .499 .280 .002 .999
我怎样才能做到这一点?
答案 0 :(得分: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)]
答案 1 :(得分:4)
目前,您正在为不同iter
的每个项目单独计算列表中的函数。但是,如果您想要聚合统计数据,只需删除by
子句,您的函数将在整个数据集上运行一次。然后添加一个项目以提供N
- 使用data.table提供的.N
变量。
DATA <- reps[, list(N=.N, mean=mean(rndm), median=median(rndm),
sd=sd(rndm), min=min(rndm), max=max(rndm))]