Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按天和小时分组_R - Fatal编程技术网

R 按天和小时分组

R 按天和小时分组,r,R,我创建了一个包含三列的数据框date、ID和price(e5)。 我想按天和小时计算平均价格 > head(fuel_price, n = 5) date station_uuid e5 1 2019-04-15 04:01:06+02 88149d2f-3258-445b-bfa4-60898e7fb186 1.529 2 2019-04-15 04:56:05+02

我创建了一个包含三列的数据框date、ID和price(e5)。 我想按天和小时计算平均价格

> head(fuel_price, n = 5) 
                        date                         station_uuid    e5
    1 2019-04-15 04:01:06+02 88149d2f-3258-445b-bfa4-60898e7fb186 1.529
    2 2019-04-15 04:56:05+02 5c2d04fd-e464-4c96-b4a6-d996d0a8630c 1.539
    3 2019-04-15 05:00:06+02 c8137d18-edad-4006-9746-18e876b14b1d 1.530
    4 2019-04-16 05:00:06+02 6b2143cb-1cd8-4b4b-b2fb-2502f6ea8b35 1.542
    5 2019-04-16 05:02:06+02 dbdb29f5-93aa-4ee4-a52b-7bff0e4ab75a 1.562
我认为主要的问题是日期的格式不正确,但我无法更改它,因为最后的时区是+02

price_2019$date <- mdy_hms(prices_2019$date)
price\u 2019$date%汇总(平均价格=平均价格))

你能帮我个忙吗?

你可以使用
lubridate::ymd_hms
日期
变量转换为日期时间,从中按天和小时分组,并取
每小时
价格
平均值

library(dplyr)

prices_2019 %>%
  mutate(date = lubridate::ymd_hms(date),
         date_hour = format(date, "%Y-%m-%d %H")) %>%
  group_by(date_hour) %>%
  summarize(mean_price = mean(price))

我认为这很有效,谢谢!当我浏览数据框时,我看到一些日期的时区为+02,而另一些日期的时区为+01。这是一个问题吗?
class(prices\u 2019$date)
返回什么?>class(prices\u 2019$date)[1]“字符”,但这是在转换之前使用
lubridate::ymd\u hms
将所有内容转换为UTC时区,这样如果您的日期中包含不同的时区,就不会产生问题。请参阅更新的答案。
library(dplyr)

prices_2019 %>%
  mutate(date = lubridate::ymd_hms(date),
         date_hour = format(date, "%Y-%m-%d %H")) %>%
  group_by(date_hour) %>%
  summarize(mean_price = mean(price))