gpt4 book ai didi

r - 如何在 R 中更快地过滤数据集并计算新变量?

转载 作者:行者123 更新时间:2023-12-02 09:09:11 25 4
gpt4 key购买 nike

我有一个数据集,其中包含每分钟的值,我想计算每小时的平均值。我尝试使用 dplyr 包中的 group_by()、filter() 和 summarise() 来减少每小时的数据。当我仅使用这些函数时,我可以获得每小时的平均值,但只能获得每月的平均值,并且我想要每天的平均值。

> head(DF)
datetime pw cu year m d hr min
1 2017-08-18 14:56:00 0.0630341 1.94065 2017 8 18 14 53
2 2017-08-18 14:57:00 0.0604653 1.86771 2017 8 18 14 57
3 2017-08-18 14:58:00 0.0601318 1.86596 2017 8 18 14 58
4 2017-08-18 14:59:00 0.0599276 1.83761 2017 8 18 14 59
5 2017-08-18 15:00:00 0.0598998 1.84177 2017 8 18 15 0

我必须使用 for 循环来减少我的表,我编写了以下代码来做到这一点:

datetime <- c()
eg_bf <-c ()

for(i in 1:8760){
hour= start + 3600

DF= DF %>%
filter(datetime >= start & datetime < hour) %>%
summarise(eg= mean(pw))

datetime= append(datetime, start)
eg_bf= append(eg_bf, DF$eg)

start= hour
}
new_DF= data.frame(datetime, eg_bf)

所以。我能够获得新的数据集,其中包含一年中每个小时的平均值。

  datetime             eg_bf
1 2018-01-01 00:00:00 0.025
2 2018-01-01 01:00:00 0.003
3 2018-01-01 02:00:00 0.002
4 2018-01-01 03:00:00 0.010
5 2018-01-01 04:00:00 0.015

我面临的问题是需要花费很多时间才能做到这一点。我们的想法是将此计算添加到 Shiny 的 UI 中,因此每次我进行更改时,它都必须使更改速度更快。知道如何改进这个计算吗?

最佳答案

你可以试试这个。使用 lubridate 包中的 make_date 使用数据集的年、月、日和小时列创建新的 date_time 列。然后在新专栏上进行分组和总结

library(dplyr)
library(lubridate)
df %>%
mutate(date_time = make_datetime(year, m, d, hr)) %>%
group_by(date_time) %>%
summarise(eg_bf = mean(pw))

关于r - 如何在 R 中更快地过滤数据集并计算新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54627281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com