汇总向量,然后将摘要统计信息附加到R中的原始数据框

时间:2017-05-20 01:39:24

标签: r dplyr reshape2 summary mutate

说明:

我想计算给定数据帧中数值向量的均值,标准差和标准误差,然后使用这些汇总统计信息创建三个新向量。然后我需要将它们与原始数据帧结合起来。

示例代码:

## Creating our dataframe:
datetime <- c("5/12/2017 16:15:00","5/16/2017 16:45:00","5/19/2017 17:00:00")
datetime <- as.POSIXct(datetime, format = "%m/%d/%Y %H:%M:%S")
values <- c(1,2,3)
df <- data.frame(datetime, values)

## Here's the current output:
head(df)
             datetime values
1 2017-05-12 16:15:00      1
2 2017-05-16 16:45:00      2
3 2017-05-19 17:00:00      3

## And here's the desired output:
head(df1)
             datetime values mean    sd    se
1 2017-05-12 16:15:00      1    2 0.816 0.471
2 2017-05-16 16:45:00      2    2 0.816 0.471
3 2017-05-19 17:00:00      3    2 0.816 0.471

提前致谢!

对于那些对我为什么要这样做感到好奇的人,我正在关注tutorial。我需要使用错误栏制作其中一个线图,以便在低成本传感器和昂贵的参考仪器之间进行一些校准。

2 个答案:

答案 0 :(得分:2)

您可以同时进行作业。假设您已经拥有帮助函数,可以选择sdse

sd0 <- function(x){sd(x) / sqrt(length(x)) * sqrt(length(x) - 1)}
se0 <- function(x){ sd0(x) / sqrt(length(x))}

然后你可以尝试:

df[c('mean', 'sd', 'se')] <- lapply(list(mean, sd0, se0), function(f) f(df$values))
# > df
#              datetime values mean        sd        se
# 1 2017-05-12 16:15:00      1    2 0.8164966 0.4714045
# 2 2017-05-16 16:45:00      2    2 0.8164966 0.4714045
# 3 2017-05-19 17:00:00      3    2 0.8164966 0.4714045

答案 1 :(得分:1)

以下是dplyr解决方案,在sd0的答案中提供了se0mt1022

df %>% mutate("mean"=mean(values),"sd"=sd0(values),"se"=se0(values))