让 as.Date 只显示年份而不是自动包括今天的日期

Getting as.Date to show year only instead of automatically including today's date

当我尝试使用以年份作为字符的现有列创建 XTS 对象时,我的 xts 对象自动包含今天的日期,而不是我指定的仅包含年份。有没有办法只包含年份?

这是我的代码:

global_totals_ts <- xts(global_totals_m[,-1], as.Date(ts_index, format = "%Y"))

我得到的输出是:

           Christians    Muslims    Hindus Agnostics Buddhists
1900-05-17  557754602  200318122 202973290   3028610 126956371
1910-05-17  611362430  222347113 223383337   3368564 138064000
1950-05-17  870653646  338066461 323138775 129261500 175510794
1970-05-17 1229448027  570772699 462980539 544290164 234957917
2000-05-17 1987502477 1292170756 822391937 660693376 452314303
2005-05-17 2130604801 1427056087 893077485 669224713 477436475

我想要以下输出:

       Christians Muslims    Hindus     Agnostics Buddhists
1900   557754602  200318122  202973290  3028610   126956371
1910   611362430  222347113  223383337  3368564   138064000
1950   870653646  338066461  323138775  129261500 175510794
1970   1229448027 570772699  462980539  544290164 234957917
2000   1987502477 1292170756 822391937  660693376 452314303
2005   2130604801 1427056087 893077485  669224713 477436475

非常感谢!

日期对象总是有天(因为日期有天)。

一种替代方法是将其保留为日期,但按年份计算。然后日期始终是一年的第一天,因此,例如,group_by() 操作将按年完成。

library(lubridate)

global_totals_ts <- xts(global_totals_m[,-1], floor_date(as.Date(ts_index, format = "%Y"), "year"))