【发布时间】:2017-05-20 01:39:24
【问题描述】:
简介:
我想计算给定数据帧中数值向量的均值、标准差和标准误差,然后使用这些汇总统计数据创建三个新向量。然后我需要将它们与原始数据框结合起来。
示例代码:
## 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。我需要为低成本传感器和昂贵的参考仪器之间的一些校准制作一个带有误差线的折线图。
【问题讨论】:
-
创建新列并像这样分配平均值:
df$mean <- mean(df$values)。对sd和最后一列执行相同的过程 -
哇,太简单了,谢谢!我应该知道的更好......我一直在试图弄清楚如何用 dplyr 做到这一点......
-
或者:
sd0 <- function(x){sd(x) / sqrt(length(x)) * sqrt(length(x) - 1)}; se0 <- function(x){ sd0(x) / sqrt(length(x))}; df2[c('mean', 'se', 'sd')] <- lapply(list(mean, se0, sd0), function(f) f(df$values)) -
不错!我绝对需要对
lapply()感到更舒服。