R引导遍历数据帧中的所有列

时间:2019-06-16 12:21:48

标签: r

我正在尝试使用R中的boot()获取数据帧各列的引导式描述性统计信息。我不知道如何编写引导所需的“统计”函数,以便它能够遍历所有列并分别返回4个统计信息。

我基本上是试图从介绍自举的一本书中修改代码,但是该示例使用dlply根据另一列的组名将一列中的数值分组。我不需要那一步;我只需要对每一列做同样的事情。我从下面的教科书中复制了代码:

library(boot)
library(plyr)
library(moments)

DescStat <- function(data, i) {
+  temp <- data[i,]
+    desc <- dlply(temp, "GroupName", summarize, mean = mean(ValueColumn), sd = sd(ValueColumn), skew = skewness(ValueColumn), kurt = kurtosis(ValueColumn))
+  l.desc <- unlist(desc)
+  return(l.desc)
+}

DasBoot <- boot(dataframe, DescStat, 1000)
print(DasBoot)

这将返回一个表格,其中包含每个统计信息以及偏倚和SE,每行分别显示。因此,Group1的均值和偏差以及SE,然后是下一行的Group1 SD,偏差和SE,然后在列表中,每组4行。

我想做完全相同的事情,但是要对数据框中的列而不是对案例进行分组。

我一直在挣扎。似乎应该没有那么难,但是所有在线示例和教程要么只针对一列(我可以通过在statistic函数中指定它来做得很好),要么针对诸如以上。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我可以使用apply()purrr::map()来弄清楚。这是统计函数,不需要安装任何额外的软件包(tidyverse):

> ApStat <- function(data, i) {
+  temp <- data[i,]
+    desc <- apply(temp, 2, FUN = function(x) {
+      list(mean = mean(x, 0.2), sd = sd(x), 
+      skew = skewness(x), kurt = kurtosis(x))
+      })
+    l.desc <- unlist(desc)
+    return(l.desc)
+ }

感谢r / rstats的家伙/女孩!