我在r中有一个数据框,其中每个小时的每五分钟包含几个月的读数。我想计算var3(下数据框)的每日平均值,并将其添加为var4到此数据框中。
这是我的df:
>df
timestamp Var1 Var2 Var3
1 2018-07-20 13:50:00 32.0358 28.1 3.6
2 2018-07-20 13:55:00 32.0358 28.0 2.5
3 2018-07-20 14:00:00 32.0358 28.1 2.2
我从搜索论坛中找到了这种解决方案,但这引起了错误。
这是我正在应用的解决方案:
aggregate(ts(df$var3[, 2], freq = 288), 1, mean)
这是我得到的错误:
Error in df$var3[, 2] : incorrect number of dimensions
我认为这也应该适用于我的数据框,但无法消除此错误。请帮忙。
答案 0 :(得分:0)
这是使用dplyr
和lubridate
的方法。
library(dplyr)
library(lubridate)
df %>%
group_by(Day = day(ymd_hms(timestamp))) %>%
mutate(Var4 = mean(Var3))
## A tibble: 1,000 x 6
## Groups: Day [5]
# timestamp Var1 Var2 Var3 Day Var4
# <dttm> <dbl> <dbl> <dbl> <int> <dbl>
# 1 2018-07-20 13:55:30 32.2 22.9 2.35 20 2.99
# 2 2018-07-20 14:00:30 37.7 24.8 2.99 20 2.99
# 3 2018-07-20 14:05:30 38.7 29.6 3.47 20 2.99
# 4 2018-07-20 14:10:30 30.4 24.2 3.02 20 2.99
# 5 2018-07-20 14:15:30 32.0 28.4 2.95 20 2.99
## … with 995 more rows
样本数据
df <- data.frame(timestamp = ymd_hms("2018-07-20 13:50:30") + 60*5 * 1:1000,
Var1 = runif(100,30,40),
Var2 = runif(100,20,30),
Var3 = runif(100,2,4))