2016-07-11 6 views
1

Ich habe ein XTS-Objekt (von Daten indiziert)LEFT JOIN data.frame zu XTS Objekt auf Date (Index)

start <- as.Date('2016-06-30') 
end <- as.Date('2016-12-31') 
dt_len <- as.integer(end - start) 

x <- matrix(rep(NA, 8 * dt_len), ncol = 8) 
colnames(x) <- c("baseline", "cumul_baseline", 
       "scenario_1", "cumul_scenario_1", 
       "scenario_2", "cumul_scenario_2", 
       "scenario_3", "cumul_scenario_3") 

dt_ts <- xts(x, start + 1:as.integer(dt_len)) 

, in denen ich eine Baseline-Messung des Umsatzes ein. Der Zweck ist, 3 verschiedene Verkaufsszenarien aufzubauen und den tatsächlichen Verkauf mit diesen Szenarien zu vergleichen. IOT weiß, "welches" dieser Szenarien wir für "in" halten.

# baseline sales (constant) 
b_daily <- 1561 

dt_ts$baseline <- b_daily 

Ich mache dann einige "tatsächliche" (hypothetische) Verkaufsdaten über den gleichen Zeitraum.

eg_data <- data.frame(Date = seq.Date(from = as.Date("2016-07-01"), by = "day", length.out = dt_len), Sales = sample(1000:2000, dt_len)) 

Aber wenn ich versuche, mein hypothetische eg_data Objekt XTS mit meinen Szenarien Objekt zu verbinden ...

left_join(dt_ts, eg_data, by = "Date") 
Error in UseMethod("left_join") : 
    no applicable method for 'left_join' applied to an object of class "c('xts', 'zoo')" 

Meine Frage ist: wenn ich einen data.frame habe ich mag zu left_join zu einem Objekt, das ich als xts behalten möchte, wie schließe ich mich ihnen an? Ich würde gerne davon ausgehen, dass die Row-Dates nicht unbedingt übereinstimmen, so dass ein Anruf an join oder merge ...

Antwort

1

erfordert Die einfache Antwort auf Ihre Frage ist "nicht". Entweder konvertieren Sie beide in xts oder data.frame.

Hier ist, wie es mit beiden Objekten als xts zu tun, da das Speichern von Zeitreihen in einem dat.frame mich icky fühlen lässt.

xts_data <- merge(dt_ts, Sales=with(eg_data, xts(Sales, Date)), join="left") 
+0

Irgendeine Idee, warum jemand diese Frage niederschreiben würde? – d8aninja

+0

@ D8Amonk: Nein. Ich habe aufgehört zu versuchen, die Abstimmungsentscheidungen der Menschen zu verstehen. –