Wie erhält man die Wertdifferenz zwischen nachfolgenden Beobachtungen (Länderjahre)?

Angenommen, ich habe Werte für 5 Länder über einen Zeitraum von 10 Jahren, z. B .:

mydata<-1:3
mydata<-expand.grid(
country=c('A', 'B', 'C', 'D', 'E'),
year=c('1980','1981','1982','1983','1984','1985','1986','1987','1988','1989'))
mydata$score=sapply(runif(50,0,2), function(x) {round(x,4)})

library(reshape)
mydata<-reshape(mydata, v.names="score", idvar="year", timevar="country", direction="wide")

> head(mydata)
   year score.A score.B score.C score.D score.E
1  1980  1.0538  1.6921  1.3165  1.7434  1.9687
6  1981  1.4773  1.6479  0.3135  0.6172  0.7704
11 1982  0.8748  1.3704  0.2788  1.6306  1.7237
16 1983  1.1224  1.1340  1.7684  1.3352  0.4317
21 1984  1.5496  1.8706  1.4641  0.5313  0.8590
26 1985  1.7715  1.8953  0.6230  0.3580  1.6313

Jetzt möchte ich eine neue Variable "Periode" erstellen, die 1 ist, wenn der Wert des folgenden Jahres +/- 0,5 vom Wert des vorherigen Jahres abweicht und 0 ist, wenn dies nicht zutrifft. Ich würde das gerne für alle 5 Länder tun. Und es wäre großartig, wenn es möglich wäre, die Länderjahre, für die der Zeitraum = 1 ist, zu identifizieren und diese Informationen in einer Tabelle anzuzeigen.

> head(mydata)
   year score.A score.B score.C score.D score.E  period.A  period.B ...
1  1980  1.0538  1.6921  1.3165  1.7434  1.9687   NA         NA
6  1981  1.4773  1.6479  0.3135  0.6172  0.7704   0          ....
11 1982  0.8748  1.3704  0.2788  1.6306  1.7237   1
16 1983  1.1224  1.1340  1.7684  1.3352  0.4317   0
21 1984  1.5496  1.8706  1.4641  0.5313  0.8590   0
26 1985  1.7715  1.8953  0.6230  0.3580  1.6313   0

Ich hoffe sehr, dass dies nicht zu viel verlangt wird. Ich habe es mit versuchtdist in demlibrary(proxy) aber ich weiß nicht, wie ich die Funktion auf Beobachtungspaare anstatt auf die ganze Reihe beschränken soll. Tausend Dank!!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage