2017-04-20 87 views
1

我想计算从一年的开始到最新日期的销售额总和。R:计算年初至今的金额

我的数据:

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

MY YTD应为200 + 300

+0

我知道这是500,我想使用它的更大的数据:) – aannie

回答

0

我假设你Datecharacter和最后四位数字表示year

然后你就可以过滤它等于当年下面:

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

但我不能用Sys.Date为02-2017不是当前日期 – aannie

+0

'year(Sys.Date())'将返回'2017' –

+0

您将需要加载'lubridate'包以使用'year()' –

0

这将总结所有值当前历年sum(df$Sales[format(df$Date, "%Y") == format(Sys.Date(), "%Y")]) - 你可能需要确保你的df$Date变量是类Date的

0

您可以使用dplyr按年进行汇总。 lubridate也是有用的group_by年:

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