【发布时间】:2020-02-02 05:01:05
【问题描述】:
我正在尝试标准化表timeseries 中列的开始日期,以便每个列都基于我在另一个表StartEnd 中的预定义值开始。 timeseries 中的 datetime 是 POSIXct 格式,就像这个问题中的所有日期值一样。
如何创建一个数据框,其中每列的第一行以 Start 的值开头,同时删除 End 的 0 值?这是在堆叠数据集上使用 spread() 之后:
timeseries <- spread(timeseries, ID, Count , fill = "0")
我研究了过滤器,但我不确定 dplyr 是否会成为这里的首选。我认为某种功能可以解决,但以我有限的知识,我不知道在这种情况下一个功能的结构会是什么样子。 Jfyi 我是 R 自学的,除了一些 Coursera 课程外,没有接受过正规的编码教育。
timeseries:
datetime ID1 ID2 ID3 ID4 ID5 ID6 ID7
1 01/01/19 00:00:00 0 0 7 1 1 0 0
2 01/01/19 01:00:00 0 0 11 2 2 0 0
3 01/01/19 02:00:00 0 0 6 3 3 0 0
4 01/01/19 03:00:00 3 0 10 0 4 0 0
5 01/01/19 04:00:00 4 0 3 0 5 0 0
6 01/01/19 06:00:00 5 1 1 0 6 0 1
7 01/01/19 07:00:00 6 2 1 0 7 0 3
8 01/01/19 09:00:00 0 3 2 0 0 1 0
9 01/01/19 10:00:00 1 4 3 0 0 2 1
StartEnd:
SomeID Start End
ID1 01/01/19 03:00:00 01/01/19 10:00:00
ID2 01/01/19 06:00:00 01/01/19 10:00:00
ID3 01/01/19 00:00:00 01/01/19 10:00:00
ID4 01/01/19 00:00:00 01/01/19 02:00:00
ID5 01/01/19 00:00:00 01/01/19 07:00:00
ID6 01/01/19 09:00:00 01/01/19 10:00:00
ID7 01/01/19 06:00:00 01/01/19 10:00:00
预期输出:
ID1 ID2 ID3 ID4 ID5 ID6 ID7
1 3 1 7 1 1 1 1
2 4 2 11 2 2 2 3
3 5 3 6 3 3 0
4 6 4 10 4 1
5 0 3 5
6 1 1 6
7 1 7
8 2
9 3
【问题讨论】:
-
你能显示你的预期输出吗?
-
更新了预期的输出,很抱歉它不是更清楚!
标签: r date transformation