R语言如何跨不同行取值计算时间差乘功率的能耗总和
R 相邻时间戳差计算总能耗实现方案
初始测试数据
构建的初始数据框代码如下:
df <- data.frame(time=c("10:01","10:05","10:11","10:21"), power=c(30,32,35,36))
实现逻辑
跨行计算相邻行差值不需要复杂循环或第三方依赖,直接用R内置函数即可完成:
- 先将字符型时间字段转换为支持算术运算的时间格式
- 用
diff()函数直接计算时间向量相邻元素的差值,自动得到每个时段的时长,返回结果长度为原数据行数-1,刚好对应前n-1行的时段 - 功率字段去掉最后一个值(最后一行没有后续时间戳,不参与计算),和时间差向量长度对齐后对应相乘,最后求和得到总能耗
可直接运行的代码
# 转换时间格式+计算时间差+匹配功率+求和 E <- sum( diff(as.POSIXct(df$time, format = "%H:%M"), units = "mins") * head(df$power, -1) ) # 打印结果 print(E)
运行后即可得到预期结果E=662。
计算校验
各时段计算明细:
- 10:01~10:05:时长4分钟,功率30,乘积120
- 10:05~10:11:时长6分钟,功率32,乘积192
- 10:11~10:21:时长10分钟,功率35,乘积350
- 总和:120+192+350=662,和预期结果一致。
内容的提问来源于stack exchange,提问作者WestCoast
相关产品推荐
相关产品推荐

