r - 从数据框中计算每日参数,其中包含行中的每小时值和几列感兴趣的列
问题描述
数据框汇总了每小时 ( ) 不同深度 ( , , )的df1
水温。作为数据框的示例:T5m
T15m
T25m
T35m
Datetime
df1<- data.frame(Datetime=c("2016-08-12 12:00:00","2016-08-12 13:00:00","2016-08-12 14:00:00","2016-08-12 15:00:00","2016-08-13 12:00:00","2016-08-13 13:00:00","2016-08-13 14:00:00","2016-08-13 15:00:00"),
T5m= c(10,20,20,10,10,20,20,10),
T15m=c(10,20,10,20,10,20,10,20),
T25m=c(20,20,20,30,20,20,20,30),
T35m=c(20,20,10,10,20,20,10,10))
df1$Datetime<- as.POSIXct(df1$Datetime, format="%Y-%m-%d %H")
df1
Datetime T5m T15m T25m T35m
1 2016-08-12 12:00:00 10 10 20 20
2 2016-08-12 13:00:00 20 20 20 20
3 2016-08-12 14:00:00 20 10 20 10
4 2016-08-12 15:00:00 10 20 30 10
5 2016-08-13 12:00:00 10 10 20 20
6 2016-08-13 13:00:00 20 20 20 20
7 2016-08-13 14:00:00 20 10 20 10
8 2016-08-13 15:00:00 10 20 30 10
我想创建一个新的数据框df2
,其中我有每个深度间隔和整个水柱的每天平均水温和标准误差估计。我会期待这样的事情(我是手工计算的,所以可能会有一些错误):
> df2
Date meanT5m meanT15m meanT25m meanT35m meanTotal seT5m seT15m seT25m seT35m seTotal
1 2016-08-12 15 15 22.5 15 16.875 2.88 2.88 2.5 2.88 1.29
2 2016-08-13 15 15 22.5 15 16.875 2.88 2.88 2.5 2.88 1.29
我特别有兴趣知道如何使用它,data.table
因为我将使用巨大的 data.frames 并且我认为data.table
它非常有效。
为了计算标准误差,我知道std.error()
package中的函数plotrix
。
解决方案
根据@chinsoon 的评论更新
首先将您的数据框转换为数据表:
library(data.table) setDT(df1)
创建
total
列:df1[, total := rowSums(.SD), .SDcols = grep("T[0-9]+m", names(df1))][] # Datetime T5m T15m T25m T35m total # 1: 2016-08-12 12:00:00 10 10 20 20 60 # 2: 2016-08-12 13:00:00 20 20 20 20 80 # 3: 2016-08-12 14:00:00 20 10 20 10 60 # 4: 2016-08-12 15:00:00 10 20 30 10 70 # 5: 2016-08-13 12:00:00 10 10 20 20 60 # 6: 2016-08-13 13:00:00 20 20 20 20 80 # 7: 2016-08-13 14:00:00 20 10 20 10 60 # 8: 2016-08-13 15:00:00 10 20 30 10 70
应用以下功能
day
:library(lubridate) (df3 <- df1[, as.list(unlist(lapply(.SD, function (x) c(mean = mean(x), sem = sd(x) / sqrt(length(x)))))), day(Datetime)]) # day T5m.mean T5m.sem T15m.mean T15m.sem T25m.mean T25m.sem T35m.mean # 1: 12 15 2.886751 15 2.886751 22.5 2.5 15 # 2: 13 15 2.886751 15 2.886751 22.5 2.5 15 # T35m.sem total.mean total.sem # 1: 2.886751 67.5 4.787136 # 2: 2.886751 67.5 4.787136
推荐阅读
- powershell - 无法通过 PowerShell 从 FolderBrowserDialog 创建新文件夹
- reactjs - 从子端进行子组件和父组件之间通信的最佳实践是什么?
- android - 运行 adb 时出错:找不到 Android 设备 - expo-cli linux
- spring-boot - 使用profile打包部署spring boot项目成war成功,但是尝试访问页面时无法访问页面
- kivy - Kivy RecycleView:我们如何滚动到列表的末尾
- python - 如何使用 Reddit API 在我的 HTML 文件中呈现图像
- php - 通过控制台而不是通过 Web 提供 array[] 参数
- vue.js - Nuxt Vuex Store - 模块化方法的问题
- hive - pyspark 中的 spark.sql - 无法实例化 org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
- dashing - 潇洒的仪表板。如何将“updatedAtMessage”更改为十二小时?