【发布时间】:2018-07-02 21:20:28
【问题描述】:
希望有人能指出我的具体问题的解决方案。
假设我有一个数据框,在 A 列中我有格式日期(YYYY-MM-DD,POSIXct),它们介于某个起点和终点之间(即 2017/01/01 到 2018/01/01)。在 B 列中,我有一个项目列表,在 C 列中,我有 A 中给定日期的项目数量。此外,我想添加一个假设,即尽管 A 列中的日期在已知的开始日期和结束日期之间运行,并且是有序的,它们不一定被相等的时间间隔分开。一个示例可能如下所示:
+------------+-------+----------+
| Date | Item | Quantity |
+------------+-------+----------+
| 2017/01/01 | Beans | 2 |
| 2017/01/01 | Pens | 4 |
| 2017/01/04 | Beans | 3 |
| 2017/01/04 | Pens | 5 |
| 2017/02/01 | Tubes | 4 |
| 2017/02/03 | Beans | 9 |
+------------+-------+----------+
我想做的是添加一个列,将 A 列中的每个日期转换为一个正整数,该正整数对应于自给定开始日期以来的天数。比如开始日期是2017/01/01,我想添加以下列
+------------+-------+----------+------+
| Date | Item | Quantity | Days |
+------------+-------+----------+------+
| 2017/01/01 | Beans | 2 | 1 |
| 2017/01/01 | Pens | 4 | 1 |
| 2017/01/04 | Beans | 3 | 4 |
| 2017/01/04 | Pens | 5 | 4 |
| 2017/01/08 | Tubes | 4 | 8 |
| 2017/01/09 | Beans | 9 | 9 |
+------------+-------+----------+------+
是否有一个简单的解决方案利用 R 的内部日期/时间处理(特别是月/闰年的天数等...)
这是评论者要求的 dput()
structure(list(date = structure(c(17167, 17167, 17170, 17170, 17174,
17175), class = "Date"), item = structure(c(1L, 2L, 1L, 2L, 3L, 1L),
.Label = c("Beans", "Pens", "Tubes"), class = "factor"), quantity =
c(2, 4, 3, 5, 4, 9)), class = "data.frame", row.names = c(NA, -6L))
提前感谢您的帮助,希望我的问题可以理解。
【问题讨论】: