gpt4 book ai didi

r - R中按时间的平均值

转载 作者:行者123 更新时间:2023-12-05 02:17:48 24 4
gpt4 key购买 nike

我每秒测量一次化合物浓度。我想做 30 秒和 60 秒的平均值。我一直在阅读这里的帖子,我尝试了 lubridatedplyr。但没有运气。我正在努力使这项工作,但我一直无法做到。我正在从 SAS 过渡到 R,所以请耐心等待。

这是我的数据:

head (data)#show the first 6 rows

Date Time Temp Appb Bppb Cppb Dppb Eppb Fppb

1 10/30/17 21:32:33 25.23 -0.469304 22.4445 35.5993 -18.4843 52.0488 -2.947340
2 10/30/17 21:32:34 25.23 -1.255780 21.8248 34.2364 -20.9051 47.4344 -2.071230
3 10/30/17 21:32:35 25.23 -0.769233 21.1590 30.5892 -20.9347 42.6061 -0.991607
4 10/30/17 21:32:36 25.23 -0.874262 21.3353 25.4841 -19.6127 38.3224 -0.452383
5 10/30/17 21:32:37 25.24 -0.819439 21.1916 21.4919 -16.5991 36.1331 -0.150002
6 10/30/17 21:32:38 25.24 -1.895730 21.5345 18.0576 -17.2539 31.7448 -0.311064

最佳答案

那么,您可以执行以下操作:

data$time_bucket <- 
as.POSIXct(round(as.numeric(as.POSIXct(paste(data$Date, data$Time), format="%m/%d/%y %H:%M:%S"))/30)*30, origin='1970-01-01')

这可能看起来有点复杂,但它做了以下事情:

  1. as.POSIXct(paste(data$Date, data$Time), format="%m/%d/%y %H:%M:%S") 将日期粘贴在一起和时间列来创建一个“日期时间”对象。
  2. as.numeric 将其转换为“纪元”数字 - 自 1970 年 1 月 1 日以来的秒数
  3. 除以 30,舍入并乘以 30 - 这将创建 30 秒的时间段。舍入到相同数字的所有时间在舍入后将具有相同的“标签”。
  4. 最后使用 as.POSIXct 将其转换为“datetime”。

完成所有这些后,您可以按时间段取平均值,例如使用 dplyr:

data %>% group_by(time_bucket) %>%
summarize(mean(Temp))

希望这能回答您的问题。

关于r - R中按时间的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028518/

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