2017-04-20 3 views
1

Ich möchte die Summe der Verkäufe vom Anfang des Jahres bis zum neuesten Datum berechnen.R: Berechnung Jahr bis Datum Summe

Meine Daten:

ID Date  Sales 
1 11-2016 100 
1 12-2016 100 
1 01-2017 200 
1 02-2017 300 

MY YTD 200 + 300

+0

Ich weiß, es ist 500, ich möchte es für größere Daten verwenden :) – aannie

Antwort

0

sein sollte ich nehme an, Sie Date Feld ist character und die letzten vier Ziffern stellen year.

Dann können Sie auswählen, wo er mit unter dem aktuellen Jahr entspricht:

df<-read.table(text="ID Date  Sales 
1 11-2016 100 
1 12-2016 100 
1 01-2017 200 
1 02-2017 300",header=T) 

sum(df[substr(df$Date,4,7)==format(Sys.Date(),"%Y"),]$Sales) 
[1] 500 
+0

Aber ich kann nicht Sys.Date verwenden als 02-2017 nicht das aktuelle Datum ist – aannie

+0

'year (Sys.Date())' gibt '2017' zurück –

+0

Sie müssen das' lubridate' Paket laden, um 'year()' –

0

Dadurch werden alle Werte für das laufende Kalenderjahr summieren sum(df$Sales[format(df$Date, "%Y") == format(Sys.Date(), "%Y")]) - Sie benötigen Ihre df$Date Variable Klasse Date ist

, um sicherzustellen,
0

Sie könnten dplyr verwenden, um nach Jahr zusammenzufassen. lubridate ist auch nützlich, um group_by Jahre:

df1<-read.table(text="ID Date  Sales 
1 11-2016 100 
1 12-2016 100 
1 01-2017 200 
1 02-2017 300",header=TRUE, stringsAsFactors=FALSE) 
df1$Date <- as.yearmon(df1$Date,format="%m-%Y") 

library(dplyr);library(lubridate) 
df1%>% 
group_by(Year=year(Date))%>% 
summarise(Sales=sum(Sales)) 

    Year Sales 
    <dbl> <int> 
1 2016 200 
2 2017 500