说明:
我想计算给定数据帧中数值向量的均值,标准差和标准误差,然后使用这些汇总统计信息创建三个新向量。然后我需要将它们与原始数据帧结合起来。
示例代码:
## 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。我需要使用错误栏制作其中一个线图,以便在低成本传感器和昂贵的参考仪器之间进行一些校准。
答案 0 :(得分:2)
您可以同时进行作业。假设您已经拥有帮助函数,可以选择sd
和se
:
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
的答案中提供了se0
和mt1022
:
df %>% mutate("mean"=mean(values),"sd"=sd0(values),"se"=se0(values))