2017-05-12 5 views
1

Ich habe den folgenden Datenrahmen;Gesamtwert mit der Zeit im Datenrahmen

Date <- as.Date(c('2006-08-23', '2006-08-30', '2006-09-06', '2006-09-13', '2006-09-20')) 
order <- c("buy", "buy", "sell", "buy", "buy") 
cost <- c(10, 15, 12, 13, 8) 
df <- data.frame(Date, order, cost) 
df 
      Date order cost 
    1 2006-08-23 buy 10 
    2 2006-08-30 buy 15 
    3 2006-09-06 sell 12 
    4 2006-09-13 buy 13 
    5 2006-09-20 buy 8 

Wie kann ich unter Berücksichtigung Zeitpunkt die Kosten Spalte Summe und der Auftrags Spalte und erhalten die neue Balance Spalte in einem neuen Datenrahmen wie diese?

   Date order cost balance 
    1 2006-08-23 buy 10  10 
    2 2006-08-30 buy 15  25 
    3 2006-09-06 sell 12  13 
    4 2006-09-13 buy 13  26 
    5 2006-09-20 buy 8  34 

Antwort

2

Angenommen, Sie haben eine sortierte DF, „Kosten“ ist ein unsmart Label, da wir ein Zeichen erzeugen, müssen zu zeigen, was die tatsächlichen Kosten auf den Kauf/Verkauf Flagge basiert.

df$cost[df$order == 'sell'] <- -df$cost[df$order == 'sell'] 

Waage ist dann cumsum(df$cost).