如何查找当前和上个月的所有日期?

时间:2017-03-13 13:57:30

标签: r loops while-loop

我有一张桌子

EmployeeSalary:

Date       | Salary
01.12.2016 | 2000
01.02.2016 | 3000
03.02.2016 | 5000
01.03.2017 | 1000
30.01.2017 | 5000
10.03.2017 | 1300

系统日期为13.03.2017时。如何获得当前月份日期和过去一个月的日期(即从2月1日到系统日期)。

我的代码是:

start= format(Sys.Date() - 30, '%Y-%m-01') 
end=Sys.time() 
while (start<end)
{
  print(EmployeeSalary)
  EmployeeSalary$"Date" = EmployeeSalary$"Date"+1
}

我得到的错误:

  

错误:二元运算符的非数字参数

预期输出为:

EmployeeSalary:

Date       | Salary
01.02.2016 | 3000
03.02.2016 | 5000
01.03.2017 | 1000
10.03.2017 | 1300

1 个答案:

答案 0 :(得分:3)

这是一种方式:

R> dates <- seq(Sys.Date(), length=62, by=-1)
R> mon <- function(d) as.integer(format(d, "%m")) %% 12
R> dates[mon(dates) >= mon(Sys.Date())-1]
 [1] "2017-03-13" "2017-03-12" "2017-03-11" "2017-03-10" "2017-03-09"
 [6] "2017-03-08" "2017-03-07" "2017-03-06" "2017-03-05" "2017-03-04"
[11] "2017-03-03" "2017-03-02" "2017-03-01" "2017-02-28" "2017-02-27"
[16] "2017-02-26" "2017-02-25" "2017-02-24" "2017-02-23" "2017-02-22"
[21] "2017-02-21" "2017-02-20" "2017-02-19" "2017-02-18" "2017-02-17"
[26] "2017-02-16" "2017-02-15" "2017-02-14" "2017-02-13" "2017-02-12"
[31] "2017-02-11" "2017-02-10" "2017-02-09" "2017-02-08" "2017-02-07"
[36] "2017-02-06" "2017-02-05" "2017-02-04" "2017-02-03" "2017-02-02"
[41] "2017-02-01"
R> 

我们创建倒退日期序列。然后我们创建辅助函数来获取日期的(整数值)月份。

鉴于这两个,我们将日期序列索引到符合您条件的日期序列:从这个月或前一个月开始。

通过采用'月模12',我们也可以看到1月的情况与12月相比。