Ich habe eine Tabelle, die eine Menge von Messungen von verschiedenen Metern enthält. Jede Messung wird in einer neuen Zeile gespeichert und hat den aktuellen Meterwert. Ich muss den Unterschied zwischen jeder aufeinanderfolgenden Messung pro Meter unterscheiden.Berechnen Delta zwischen verschiedenen Zeilen in der gleichen Tabelle
Simplified imput:
[2016-11-03,MeterA,45]
[2016-11-03,MeterB,45]
[2016-11-04,MeterA,47]
[2016-11-04,MeterB,54]
Derzeit ich dies für Schleifen mit mehreren mache aber das dauert lange und es wahrscheinlich ist eine effizientere Art und Weise. Code zur Zeit
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
}
}
}
}
Ausgang Wunsch
[2016-11-03,MeterA,0]
[2016-11-03,MeterB,0]
[2016-11-04,MeterA,2]
[2016-11-04,MeterB,9]
Verwendung 'lag' von dplyr. – yeedle