A: so finden sie den nächstgelegenen wert in einem vektor


Sie können die folgende grundlegende Syntax verwenden, um den nächsten Wert zwischen den Elementen zweier Vektoren in R zu finden:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Den nächstliegenden Wert in einem Vektor in R finden

Angenommen, wir haben die folgenden zwei Vektoren in R:

 #definevectors
vector1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
vector2 <- c(3, 5, 8, 11)

Nehmen wir nun an, dass wir für jeden Wert im ersten Vektor den nächstgelegenen Wert im zweiten Vektor finden möchten.

Wir können dazu die folgende Syntax verwenden:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

 [1] 3 3 3 3 5 5 8 8 8 11

So interpretieren Sie das Ergebnis:

  • Für den ersten Wert von Vektor1 (1) ist der Wert, der Vektor2 am nächsten kommt, 3 .
  • Für den zweiten Wert von Vektor1 (2) ist der Wert, der Vektor2 am nächsten kommt, 3 .
  • Für den dritten Wert von Vektor1 (3) ist der Wert, der Vektor2 am nächsten kommt, 3 .
  • Für den vierten Wert von Vektor1 (4) ist der Wert, der Vektor2 am nächsten kommt, 3 .
  • Für den fünften Wert von Vektor1 (5) ist der Wert, der Vektor2 am nächsten kommt, 5 .

Und so weiter.

Hinweis : Bei dieser Methode wird davon ausgegangen, dass die Werte des zweiten Vektors streng ansteigend sind. Falls Sie dies noch nicht getan haben, müssen Sie möglicherweise zuerst den zweiten Vektor sortieren.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in R ausführen:

So berechnen Sie den Mittelwert pro Gruppe in R
So mitteln Sie den Durchschnitt über Spalten in R
So summieren Sie bestimmte Spalten in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert