我想計算從一年的開始到最新日期的銷售額總和。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