【问题标题】:Getting as.Date to show year only instead of automatically including today's date获取 as.Date 仅显示年份而不是自动包括今天的日期
【发布时间】:2018-05-17 13:50:58
【问题描述】:

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

非常感谢!

【问题讨论】:

  • 它不是 xts 的东西。 as.Date('1900', format = "%Y") 也一样。

标签: r indexing time-series xts


【解决方案1】:

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

另一种方法是将其保留为日期,但按年计算。那么日期总是一年中的第一天,例如,group_by() 操作将按年完成。

library(lubridate)

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

【讨论】:

  • 谢谢!您的第二个解决方案效果很好(我想我会坚持下去),但第一个解决方案不起作用 - 我收到一个错误:xts 错误(global_totals_m[, -1], year(as.Date( ts_index, format = "%Y"))) : order.by 需要一个适当的基于时间的对象。 ts_index 是一个字符向量。还是谢谢!
  • 感谢您的澄清;我删除了第一个建议,但它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2013-07-23
  • 1970-01-01
  • 2019-04-10
相关资源
最近更新 更多