【发布时间】:2016-11-03 14:50:11
【问题描述】:
我有一张表格,其中包含来自不同仪表的大量测量值。每个测量值都存储在一个新行中,并具有实际的仪表值。我需要知道每米每次连续测量之间的差异。
简化输入:
[2016-11-03,MeterA,45]
[2016-11-03,MeterB,45]
[2016-11-04,MeterA,47]
[2016-11-04,MeterB,54]
目前我正在使用几个 for 循环来执行此操作,但这需要很长时间,并且可能有一种更有效的方法。当前代码
data$diff <- 0;
for(address in unique(data$Address)){
subaddr <- subset(data, data$Address== address)
for(meter in unique(subaddr$Meter)){
submeter <- subset(subaddr, subaddr$Meter == meter)
for (i in 1:nrow(submeter)){
if(i > 1){
prow = submeter[i-1,]
row = submeter[i,]
data[which(data$Address == address & data$Meter == meter & data$UCPTlogTime == row$UCPTlogTime),]$diff <- row$UCPTvalue - prow$UCPTvalue
}
}
}
}
期望的输出
[2016-11-03,MeterA,0]
[2016-11-03,MeterB,0]
[2016-11-04,MeterA,2]
[2016-11-04,MeterB,9]
【问题讨论】:
-
使用来自 dplyr 的
lag。
标签: r