r - 是否有从格式计算仅小时总和的功能:“H:M:S”
问题描述
我的工作目标是删除每小时无法获得至少一个温度的日期(1 小时、2 小时、3 小时、...... 23 小时)
- 我用 id 和 date 来计算小时的总和
- 然后我将使用过滤器删除行
sum_heure=tab[,list(h=sum(hour(as.POSIXct(tab$heure1,format="%H:%M:%S")))),by=list(id,date1)]
sub_Test_Heure=filter(sum_heure,h ==276)
这是我的数据框的一个例子:
id<- c("130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f","130f"
,"138g","138g","138g")
date1 <- c("01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ", "01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 "
,"01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 "
,"01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 "
,"01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 ","01/01/2017 "
,"02/01/2017 ","02/01/2017 ","02/01/2017 ")
temperature <- c(15,16,20,18,26,18,24,24,28,25,27,23,26,19,28,17,26,34,16,18,17,13,28,29,25,27,29,16,19,17,19,26,27,30,34,38,36,35,39,28,26,29,27,24,32,30,23,37,29,32,29,27,29)
heure1<-c("00:04:00","00:14:00","00:30:00","00:50:00","01:04:00","01:24:00","01:34:00","01:50:00","02:00:00","02:14:00","02:34:00","02:54:00","03:10:00","03:20:00","03:54:00","04:34:00","04:59:00","05:04:00","06:00:00","06:20:00","06:44:00","07:14:00","07:34:00","08:04:00","08:44:00","09:00:00","10:04:00"
,"10:04:00","10:34:00","10:54:00","11:24:00","12:04:00","13:04:00","14:04:00","14:49:00","15:00:00","15:34:00","16:00:00","16:44:00","17:14:00","17:44:00","18:25:00","19:30:00","20:04:00","20:45:00","21:10:00","22:04:00","22:47:00","23:12:00","23:50:00","00:50:00","01:30:00","22:10:00")
tab <- cbind(id,date1,heure1, temperature)
解决方案
不要使用完整的数据集tab$heure1
列data.table
(cbind
library(data.table)
library(lubridate)
setDT(tab)[, .(h = sum(hour(as.POSIXct(heure1, format = "%H:%M:%S")))),
.(id, date1)]
# id date1 h
#1: 130f 01/01/2017 479
#2: 138g 02/01/2017 23
或使用hms
setDT(tab)[, .(h = sum(hms(heure1)@hour)), .(id, date1)]
数据
tab <- data.frame(id, date1, heure1, temperature)
推荐阅读
- c# - Object Reference Not Set to an Instance - Unity2D
- hyperledger-fabric - Hyperledger Fabric 和 Hyperledger Iroha 的区别?
- apache - Apache 本地虚拟主机已列出但不起作用
- reactjs - 无法在返回 jsx 中访问 Vue 实例
- serialization - 从 MFC 对话框保存文件
- python - Scrapy 产生深度为 2 的请求
- java - 未选中将 java.io.Serializable 强制转换为 java.util.ArrayList
- java - Tomcat 无法安装错误:Service was not (uninstalled)
- python - 从css节点scrapy中提取文本
- php - 根据前一个选择框在选择框中显示内容