R:如何将数据帧拆分成组并应用统计数据

时间:2017-09-28 17:57:59

标签: r dataframe statistics

我需要计算一些描述性统计数据,例如各种数据帧的中位数,方差和标准差。所有数据帧(大约300个)具有相同数量的变量,但观察数量彼此不同,就像值一样。由于我还没有能够生成这个循环,我首先尝试在单个数据帧中运行,这个循环可以生成统计数据,将数据帧始终分成七个观察组。

第一个我正在制作循环的第一个数据框就是这个:

    # A tibble: 363 x 4
          Day Location  Flow    Qty
       <dttm>    <chr> <dbl>   <dbl>
 1 2014-03-03  ABC_100  4948 1637.10
 2 2014-03-04  ABC_100  3916  778.70
 3 2014-03-05  ABC_100  4471  748.40
 4 2014-03-06  ABC_100  5318  888.50
 5 2014-03-07  ABC_100  5888 1607.10
 6 2014-03-08  ABC_100  7490 2515.60
 7 2014-03-09  ABC_100  4306 1569.22
 8 2014-03-10  ABC_100  4939 1287.50
 9 2014-03-11  ABC_100  4988 1547.00
10 2014-03-12  ABC_100  4801 1407.20
# ... with 353 more rows

这是我能写的代码。有了它,我需要: 1 - 它将数据帧分成7组观察组; 2 - 生成基本统计数据:每组的中位数,方差,平均值和标准差; 3 - 将此数据存储在收集所有这些统计信息的新数据框中

n <- 1
meanIBI100 <- aggregate(teste, list(rep(1:(nrow(teste) %% n+1), each = n, len = nrow(teste))), median, sd, var)[-1]

我无法使它工作,我无法找到方法向我展示如何解决它。如果有人可以提供帮助,非常感谢你!

即使有人知道如何让循环不仅运行这个数据帧而且运行我拥有的所有数据帧 - 而且,我相信这是另一个循环中的循环的情况,我也谢谢你!

1 个答案:

答案 0 :(得分:0)

让DF成为您的data.frame

library(data.table)
DT <- data.table(DF)

DT

# this will get you your mean and SD's for each column
DT[, sapply(.SD, function(x) list(mean=mean(x), sd=sd(x)))]

# If we want to add names to the columns 
wide <- setnames(DT[, sapply(.SD, function(x) list(mean=mean(x), sd=sd(x))], 
c("ID", sapply(names(DT)[-1], paste0, c(".men", ".SD"))))

参考 里卡多萨波塔 Compute mean and standard deviation by group for multiple variables in a data.frame