获取as.Date仅显示年份,而不是自动包括今天的日期

时间:2018-05-17 13:50:59

标签: r indexing time-series xts

当我尝试使用以年为字符的现有列创建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

非常感谢!

1 个答案:

答案 0 :(得分:0)

日期对象将始终有天(因为日期有天)。

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

library(lubridate)

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