Unten ist eine Teilmenge von meinen Daten:R: Offset-Differenzen zwischen den Elementen in Datenrahmen Berechnung mit dem gleichen Identifikator
> head(dt)
name start end
1: 1 3195984 3197398
2: 1 3203519 3205713
3: 2 3204562 3207049
4: 2 3411782 3411982
5: 2 3660632 3661579
6: 3 3638391 3640590
dt <- data.frame(name = c(1, 1, 2, 2, 2, 3), start = c(3195984,
3203519, 3204562, 3411782, 3660632, 3638391), end = c(3197398,
3205713, 3207049, 3411982, 3661579, 3640590))
Ich mag eine anderen Wert berechnen: die Differenz zwischen dem Ende der Zeile n-Koordinate und der Startkoordinate von Zeile n + 1, aber nur wenn beide Elemente einen Namen teilen. Auszuarbeiten das ist, was ich will ein resultierendes Datenrahmen wie folgt aussehen:
name start end dist
1: 1 3195984 3197398
2: 1 3203519 3205713 -6121
3: 2 3204562 3207049
4: 2 3411782 3411982 −204733
5: 2 3660632 3661579 −248650
6: 3 3638391 3640590
Der Grund, warum ich dies tun wollen, ist, dass ich für dist Werte bin auf der Suche, die positiv sind. Eine Möglichkeit, die ich versucht habe, ist, die Anfangs- und Endkoordinaten auszugleichen, aber dann stoße ich auf ein Problem, bei dem ich Dinge mit verschiedenen Namen vergleiche.
Wie macht man das in R?
Ist das ein 'data.table' eher als ein' data.frame'? Es sieht aus wie die Zeilennamen drucken. Wenn dies der Fall ist, eröffnet das einige andere Möglichkeiten für Antworten. – thelatemail
@thelatemail '> Klasse (dt)' gibt: '[1]" data.frame "'. Wäre es am besten zu versuchen, in eine 'data.table' zu konvertieren? – reedms
Nein, nicht unbedingt, sie unterscheiden sich nur geringfügig in Bezug auf mögliche Lösungen. – thelatemail