我想计算从一年的开始到最新日期的销售额总和。R:计算年初至今的金额
我的数据:
ID Date Sales
1 11-2016 100
1 12-2016 100
1 01-2017 200
1 02-2017 300
MY YTD应为200 + 300
我想计算从一年的开始到最新日期的销售额总和。R:计算年初至今的金额
我的数据:
ID Date Sales
1 11-2016 100
1 12-2016 100
1 01-2017 200
1 02-2017 300
MY YTD应为200 + 300
我假设你Date
场character
和最后四位数字表示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
但我不能用Sys.Date为02-2017不是当前日期 – aannie
'year(Sys.Date())'将返回'2017' –
您将需要加载'lubridate'包以使用'year()' –
这将总结所有值当前历年sum(df$Sales[format(df$Date, "%Y") == format(Sys.Date(), "%Y")])
- 你可能需要确保你的df$Date
变量是类Date的
您可以使用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
我知道这是500,我想使用它的更大的数据:) – aannie