gpt4 book ai didi

r - 如何在R中按小时计算变量的平均值

转载 作者:行者123 更新时间:2023-12-04 10:28:35 26 4
gpt4 key购买 nike

尝试按小时计算平均温度时遇到麻烦。

我有一个数据框,其中包含日期时间(hh:mm:ss p.m./a.m。)和温度
我需要按小时提取平均温度,以绘制温度的每日变化。

我是R的新手,但是尝试了一下我所知道的:我首先尝试将小时转换为数字,然后提取前两个字符,然后计算均值,但效果不佳。而且,我要分析的文件太多,以至于拥有比我发现的“解决方案”更自动化,更干净的文件会更好。

我相信这是按小时计算R平均值的更好方法,因此我一直在这里的其他帖子中寻找答案。不幸的是,我找不到有关从时间数据中提取统计信息的明确答案。

我的数据看起来像这样

          date     hour temperature
1 28/12/2013 13:03:01 41.572
2 28/12/2013 13:08:01 46.059
3 28/12/2013 13:13:01 48.55
4 28/12/2013 13:18:01 49.546
5 28/12/2013 13:23:01 49.546
6 28/12/2013 13:28:01 49.546
7 28/12/2013 13:33:01 50.044
8 28/12/2013 13:38:01 50.542
9 28/12/2013 13:43:01 50.542
10 28/12/2013 13:48:01 51.04
11 28/12/2013 13:53:01 51.538
12 28/12/2013 13:58:01 51.538
13 28/12/2013 14:03:01 50.542
14 28/12/2013 14:08:01 51.04
15 28/12/2013 14:13:01 51.04
16 28/12/2013 14:18:01 52.534
17 28/12/2013 14:23:01 53.031
18 28/12/2013 14:28:01 53.031
19 28/12/2013 14:33:01 53.031
20 28/12/2013 14:38:01 51.538
21 28/12/2013 14:43:01 53.031
22 28/12/2013 14:48:01 53.529
etc (24hs data)

我希望R计算每小时的平均值(不考虑分钟或秒的差异,仅按小时计算)

有什么建议吗?
提前非常感谢您!

问候,
玛莉亚

最佳答案

如果在问题中给出样本数据和预期输出,将总是比较容易。

使用Data.table包的解决方案

require(data.table)
data <- fread('temp.csv',sep=',') #Assuming your data is in temp.csv
#if above step not executed, convert the data frame to data.table
data <- data.table(data)
> str(data)
Classes ‘data.table’ and 'data.frame': 12 obs. of 3 variables:
$ date : chr "28/12/2013" "28/12/2013" "28/12/2013" "28/12/2013" ...
$ hour : chr "13:03:01" "13:08:01" "13:13:01" "13:18:01" ...
$ temperature: num 41.6 46.1 48.5 49.5 49.5 ...

> data
date hour temperature avg
1: 27/12/2013 13:00:00 42.99 35.78455
2: 27/12/2013 14:00:00 65.97 35.78455
3: 27/12/2013 15:00:00 63.57 35.78455

data[,list(avg=mean(temperature)),by=hour] #dataset is sorted by hour
hour avg
1: 13:00:00 42.99
2: 14:00:00 65.97
3: 15:00:00 63.57
data[,list(avg=mean(temperature)),by="date,hour"] #data set is grouped by date,then hour
date hour avg
1: 27/12/2013 13:00:00 42.99
2: 27/12/2013 14:00:00 65.97
3: 27/12/2013 15:00:00 63.57

data[,list(avg=mean(temperature)),by=list(date,hour(as.POSIXct(data$hour, format = "%H:%M:%S")))] # to group by hour only
date hour avg
1: 27/12/2013 1 29.530
2: 27/12/2013 4 65.970

关于r - 如何在R中按小时计算变量的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645628/

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