在读取 excel 文件时解析一列包含 5 个数字整数的日期格式

Parsing one column with 5 didgits integers as date format while reading excel file

对于 excel 文件(从 here 下载):

df <- openxlsx::read.xlsx('sample_data.xlsx', sheet='Sheet1', colNames=TRUE)
df

输出:

   date  value
1 43861   5.70
2 43890 -13.89
3 43921 -49.68
4 43951 -62.81

我尝试将日期列转换为正常日期格式:

> df %>% 
+   mutate(date=as.Date(date, origin = "1970-01-01"))
        date  value
1 2090-02-01   5.70
2 2090-03-02 -13.89
3 2090-04-02 -49.68
4 2090-05-02 -62.81

> df %>% 
+   mutate(date=as.Date(date, origin = "1910-01-01"))
        date  value
1 2030-02-01   5.70
2 2030-03-02 -13.89
3 2030-04-02 -49.68
4 2030-05-02 -62.81

我用 1970-01-011910-01-01 作为 origin 参数的值进行了测试,输出中的日期似乎不正确(43861 已转换为 2090-02-012030-02-01,应该是 2020-01-31).

origin 必须在 内部 as.Date 调用。

df %>%
  mutate(date = as.Date(date, origin = "1899-12-30"))
#>         date  value
#> 1 2020-01-31   5.70
#> 2 2020-02-29 -13.89
#> 3 2020-03-31 -49.68
#> 4 2020-04-30 -62.81