r - 将时间和日期数据与关联值合并
问题描述
我希望有人可以帮助我解决这个问题。以下是我正在处理的数据示例:
> print(sampleinput)
Time ACTIVITY_X ACTIVITY_Y ACTIVITY_Z
1: 6/19/18 10:40:00 60 74 95
2: 6/19/18 10:41:20 62 63 88
3: 6/19/18 10:42:40 60 56 82
4: 6/19/18 10:44:00 66 61 90
5: 6/19/18 10:45:20 60 53 80
6: 6/19/18 10:46:40 57 40 70
7: 6/19/18 10:48:00 54 41 68
8: 6/19/18 10:49:20 52 49 71
9: 6/19/18 10:50:40 61 49 78
10: 6/19/18 10:52:00 93 32 98
11: 6/19/18 10:53:20 80 54 97
12: 6/19/18 10:54:40 73 39 83
13: 6/19/18 10:56:00 47 37 60
14: 6/19/18 10:57:20 51 55 75
15: 6/19/18 10:58:40 51 60 79
16: 6/19/18 11:00:00 14 13 19
17: 6/19/18 11:01:20 0 0 0
18: 6/19/18 11:02:40 13 3 13
19: 6/19/18 11:04:00 20 10 22
20: 6/19/18 11:05:20 13 6 14
以下是我希望如何转换数据的示例:
> print(sampleoutput)
Time ACTIVITY_X ACTIVITY_Y ACTIVITY_Z
1: 6/19/18 10:40:00 0 0 0
2: 6/19/18 10:44:00 188 180 260
3: 6/19/18 10:48:00 171 134 218
4: 6/19/18 10:52:00 206 130 247
5: 6/19/18 10:56:00 200 130 240
6: 6/19/18 11:00:00 116 128 173
7: 6/19/18 11:04:00 33 13 35
正如您在 column 上看到的那样Time
,每 80 秒进行一次日期和时间测量,并为ACTIVITY_X
列ACTIITY_Y
和ACTIVITY_Z
.
我想以某种方式转换我的数据集,以便不是每 80 秒测量一次日期和时间,而是每 240 秒(4 分钟)测量一次。
至于 columns和中的值ACTIVITY_X
,这意味着每三行将它们相加为一行。请注意,对于每个时间,其关联的和度量是根据对应于的时间间隔计算的:[上一时间 + 1 秒到实际时间]。ACTIITY_Y
ACTIVITY_Z
ACTIVITY_X
ACTIITY_Y
ACTIVITY_Z
示例:对于第二行,时间6/19/18 10:41:20
值为ACTIVITY_X
,ACTIITY_Y
并且ACTIVITY_Z
对应于采样间隔 [6/19/18 10:40:01 到 6/19/18 10:41:20]。
输出表的第一行将有 0和值ACTIVITY_X
,因为我缺少前两个时间间隔的值,但这没问题。ACTIITY_Y
ACTIVITY_Z
我对 R 很陌生,虽然我已经能够用 Excel 转换我的数据,但我想自动化这个看起来很复杂的过程。
希望这是一个有趣的问题,任何意见表示赞赏!
PS:由于数据集太大,我无法使用 dput,但我已经在这里上传了
解决方案
lubridate
应该有你需要的功能。
看起来你已经在使用data.table
了,所以在这里使用它......
X <- data.table(sampleinput)
X$Time <- as.POSIXct(X$Time, format = '%m/%d/%y %H:%M:%S')
X$tgroup <- lubridate::ceiling_date(X$Time, '4 mins')
X[, list( x = sum(ACTIVITY_X),
y = sum(ACTIVITY_Y),
z =sum(ACTIVITY_Z) ), by = list (tgroup)]
退货
tgroup x y z
1: 2018-06-19 10:40:00 60 74 95
2: 2018-06-19 10:44:00 188 180 260
3: 2018-06-19 10:48:00 171 134 218
4: 2018-06-19 10:52:00 206 130 247
5: 2018-06-19 10:56:00 200 130 240
6: 2018-06-19 11:00:00 116 128 173
7: 2018-06-19 11:04:00 33 13 35
8: 2018-06-19 11:08:00 13 6 14
如有必要,您可以手动更改边界情况(第一行)
推荐阅读
- github-pages - GitHub Pages 和 Google 域设置 - 必须在域的 www 版本之前输入 https://
- javascript - 使用ajax提交表单时如何发送电子邮件
- regex - 如何在 python 中引用特定的变量列表项?
- vb.net - 带有 score_threshold 的 AutoML REST 调用返回 400 Bad Request
- r - 你如何在 R Plotly 饼图中将标题居中?
- unity3d - Photon 2 无法加入随机房间
- python - 如何使 Altair 绘图响应
- sql-server - SQL 标量值函数
- html - 你能在 xhtml 上构建 AMP 吗?
- kubernetes - 如何确保 Pod 不重启?