Ich möchte eine Funktion erstellen, die eine Reihe neuer Variablen basierend auf übereinstimmenden Spalten in zwei Datenrahmen erstellen wird. Hier einige Daten:Wie erstelle ich eine Funktion, die auf einer Spalte übereinstimmt und dann die nächste Beobachtung einer anderen Spalte ergreift?
A <- structure(list(obs = c(1, 2, 3), start.time = c(2, 5, 10)), .Names = c("obs", "start.time"), row.names = c(NA, -3L), class = "data.frame")
B <- structure(list(time.2 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), value = c(5, 15, 17, 21, 3, 14, 10, 4, 1, 33, 13)), .Names = c("time.2", "value"), row.names = c(NA, -11L), class = "data.frame")
Ich versuche, die start.time von data.frame A an die time.2 Spalte von data.frame B zu entsprechen, und dann, sobald das angepasst ist, nehmen Sie einen iterativen Schritt von der Wert Spalte B eine neue Variable in A. erstellen Hier kann die Funktion ist, ich habe (ich bin nicht sicher, dass es genau so, wie geschrieben ist es sein soll):
f1 <- function(x1, y1){B[x1==(time.2 - y1),]$value}
zum Beispiel, ich will
f1(A$start.time, 1)
um die Werte (17, 14, 1 3).
Und
f1(A$start.time, 2)
die Werte zurück (21, 10, NA).
Ich möchte dies für eine Folge von Zahlen, sagen wir 1: 2, und erstellen Sie Variablen in der A data.frame auf dem Weg. Das wäre A $ newvar.1 würde enthalten (17, 14, 13) und A $ newvar.2 würde (21, 10, NA) enthalten.
Ich habe versucht, dies über Mapply, aber ich bin nicht zu weit. Jede Hilfe würde sehr geschätzt werden!
Ich verstehe den Minus-y1-Teil nicht. du willst wissen _ 'which'_ time.2 von B ist gleich x1 und stell dich dann mit y1 ein, du hast genau das Gegenteil jetzt – rawr