5.4 补充资料
5.4.1 Excel and R
Excel是我们天天打交道的工具,但是R与Excel都有自己的时间系统,而且还不统一,在计算时会给我们带来误解。
下面就Excel和R中的差异做简单阐述。
5.4.1.1 差异
R
中日期起始时间是1970-01-01
,Excel中起始日期11(Windows)是1900-01-01
,转化成数字两者相差25568。如下所示:
as.Date('1970-01-01')
#> [1] "1970-01-01"
as.Date(25568,origin='1900-01-01') # 1970-01-02
#> [1] "1970-01-02"
as.Date(25568,origin='1899-12-31') # 1970-01-01
#> [1] "1970-01-01"
Excel中1900-01-01代表数字1,但是R中1970-01-01代表0。这也是比较怪异的点,毕竟R一般都是从1开始。
as.numeric(as.Date('1970-01-01'))
#> [1] 0
这样导致: R日期2021-06-23转化成数字是18801, Excel中日期2021-06-23转化成数字是44370,两者相差25569。
在用R读取Excel文件时,涉及到数字日期转化时需要注意其中差异。
5.4.1.2 Excel时间函数
在Excel
的Power Pivot
中有一组DAX智能函数,如:
- 基础函数
date
,datediff
,datevalue
,edate
,eomonth
,quarter
,TIMEVALUE
等等
- 智能函数
dateadd
,DATESBETWEEN
,DATESMTD
,TOTALMTD
,TOTALQTD
,TOTALYTD
等等
Excel
中因为有了以上时间智能函数,用度量值在透视表中计算同环比变得简单。
假如熟悉DAX时间智能函数,在R
中设计相关功能或实现时可以借鉴参考DAX函数的思路。比如在R中写自动化报表时,涉及到同环比计算时就可以按照这个模式设计。
Excel中存在两套日期系统↩︎