2017-03-15 8 views
4

Ich habe einen Datenrahmen wie folgt aussieht:nächste Daten von Datenrahmen in R erhält

date accumulated_visits 
01-01 102 
01-02 134 
01-03 148 
01-04 159 
01-05 162 
01-06 175 

ich eine Funktion will, die den nächsten Eintrag, eine bestimmte Besuch Nummer gegeben finden können. Zum Beispiel möchte ich das Datum finden, wenn akkumulierte Abfragen 150. Schließen erreicht kehre ich erwarten

01-03 148 

Gibt es eine buildin Funktion damit umgehen?

+0

'df [which.min (abs (wert-df $ akkumulierte_besuche),]'? – Feng

Antwort

6

können Sie absolute Differenz berechnen und verwenden which.min den Index der kleinsten Differenz

df[which.min(abs(150-df$accumulated_visits)),] 
# date accumulated_visits 
#3 01-03    148 

OR, zu finden, wenn accumulated_visits sortiert ist, können Sie auch in der Lage sein zu verwenden findInterval

df[findInterval(150, df$accumulated_visits),] 
# date accumulated_visits 
#3 01-03    148 

DATEN

df = structure(list(date = c("01-01", "01-02", "01-03", "01-04", "01-05", 
"01-06"), accumulated_visits = c(102L, 134L, 148L, 159L, 162L, 
175L)), .Names = c("date", "accumulated_visits"), class = "data.frame", row.names = c(NA, 
-6L))