A: hoe u de dichtstbijzijnde waarde in een vector kunt vinden


U kunt de volgende basissyntaxis gebruiken om de dichtstbijzijnde waarde tussen de elementen van twee vectoren in R te vinden:

 #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)

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: het vinden van de dichtstbijzijnde waarde in een vector in R

Stel dat we de volgende twee vectoren in R hebben:

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

Stel nu dat we voor elke waarde in de eerste vector de dichtstbijzijnde waarde in de tweede vector willen vinden.

We kunnen hiervoor de volgende syntaxis gebruiken:

 #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

Zo interpreteert u het resultaat:

  • Voor de eerste waarde van vector1 (1) is de waarde die het dichtst bij vector2 ligt 3 .
  • Voor de tweede waarde van vector1 (2) is de waarde die het dichtst bij vector2 ligt 3 .
  • Voor de derde waarde van vector1 (3) is de waarde die het dichtst bij vector2 ligt 3 .
  • Voor de vierde waarde van vector1 (4) is de waarde die het dichtst bij vector2 ligt 3 .
  • Voor de vijfde waarde van vector1 (5) is de waarde die het dichtst bij vector2 ligt 5 .

Enzovoort.

Opmerking : deze methode gaat ervan uit dat de waarden van de tweede vector strikt toenemen. Als u dit nog niet heeft gedaan, moet u mogelijk eerst de tweede vector sorteren.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:

Hoe het gemiddelde per groep in R te berekenen
Hoe u het gemiddelde kunt nemen over kolommen in R
Hoe specifieke kolommen in R op te tellen

Einen Kommentar hinzufügen

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