我有一个样本集,是从一个更大的数据集中提取出来的(25K条记录)。我注意到我的应用程序在这个部分上变慢了,我想检查一下是否可以提高性能。
背景信息:我的财务年度从7月开始,到6月结束。因此,我的记录有一个财务期间和财务年份,这与一个月和日历年份不同。我想添加额外的列,指示日历年份和月份。
财务期-财务年:01 2018 是 7 2017(2017年7月),财务期-财务年:07 2018 是 1 2018(2018年1月),等等。
可重现的例子:
背景信息:我的财务年度从7月开始,到6月结束。因此,我的记录有一个财务期间和财务年份,这与一个月和日历年份不同。我想添加额外的列,指示日历年份和月份。
财务期-财务年:01 2018 是 7 2017(2017年7月),财务期-财务年:07 2018 是 1 2018(2018年1月),等等。
可重现的例子:
dt<-data.table(FinancialPeriod =c(3,4,4,5,1,2,8,8,11,12,2,3,10,1,6), FinancialYear=c(2018), Amount=c(12,14,16,18,12))
dt$Month<-dt$FinancialPeriod + 6
dt$Year<-dt$FinancialYear
t1<-proc.time()
for(row in 1:nrow(dt)){
if (dt[row,"Month"] > 12){
dt[row,"Month"]<- dt[row,"Month"] -12
}
else {
dt[row,"Year"]<- dt[row,"Year"] -1
}
}
proc.time()-t1
dt
以上的代码可以正常运行,但是运行速度较慢。我希望能够得到关于如何改进的建议。
"%Y-%m"
,以便“隐藏”日期。因此,无论一个月被映射到该月的第一天还是最后一天都没有关系。 - Uwelibrary(lubridate); update(x, mday = days_in_month(x))
,其中x
是一个日期对象。 - Uwe