r - 如何将两个不同组的时间设置为零?
问题描述
如果我有一个数据框有很多这样的行:
subject-id activity label timestamp x y z
1 1600 A 2.522077e+14 -0.3647613 8.793503 1.0550842
2 1600 A 2.522077e+14 -0.8797302 9.768784 1.0169983
3 1600 A 2.522078e+14 2.0014954 11.109070 2.619156
4 1600 A 2.522078e+14 0.4506226 12.651642 0.18455505
5 1600 A 2.522079e+14 -2.1643524 13.928436 -4.4224854
6 1600 A 2.522079e+14 -4.3327790 13.361191 -0.7188721
.
.
.
subject-id activity label timestamp x y z
991 1600 B 2.519876e+14 1.37554930 15.3750460 2.9716187
992 1600 B 2.519877e+14 -3.93443300 17.5387880 2.1100159
993 1600 B 2.519877e+14 -0.08773804 12.7915650 -1.4541016
994 1600 B 2.519878e+14 2.03874200 3.0771484 -1.0537262
995 1600 B 2.519878e+14 -2.55847170 -2.7386780 -2.0985107
996 1600 B 2.519879e+14 -1.35530090 0.3884125 -0.6598511
.
.
.
subject-id activity label timestamp x y z
24551 1601 A 12865.64 4.7034090 9.127296 0.06404489
24552 1601 A 12865.68 5.3546320 15.635334 -0.62907650
24553 1601 A 12865.72 6.3997010 12.926893 0.45010993
24554 1601 A 12865.76 10.5320930 13.207614 -1.02471830
24555 1601 A 12865.80 16.1297360 2.683301 1.14263270
24556 1601 A 12865.84 0.3932476 6.549937 -3.78224020
如何通过组“主题 ID”和“活动标签”将时间设置为零?我想为该组的每个实例减去第一次。像这样:
subject-id activity label timestamp x y z
1 1600 A 0 -0.3647613 8.793503 1.0550842
2 1600 A .050354 -0.8797302 9.768784 1.0169983
3 1600 A .100708 2.0014954 11.109070 2.619156
4 1600 A .151062 0.4506226 12.651642 0.18455505
.
.
.
subject-id activity label timestamp x y z
991 1600 B 0 1.37554930 15.3750460 2.9716187
992 1600 B .049355 -3.93443300 17.5387880 2.1100159
993 1600 B .100601 -0.08773804 12.7915650 -1.4541016
.
.
.
subject-id activity label timestamp x y z
24551 1601 A 0 4.7034090 9.127296 0.06404489
24552 1601 A .04 5.3546320 15.635334 -0.62907650
24553 1601 A .085 6.3997010 12.926893 0.45010993
注意:我编了一些数字来说明我的意思。
我尝试过的:我尝试使用 dplyr 并按“活动标签”分组。我可以分组两次吗?
pa <- as.data.frame(pa %>% group_by(`activity label`) %>% mutate(timestamp = (timestamp - first(timestamp))/10E8))
解决方案
我们可以在group_by
library(dplyr)
pa <- pa %>%
group_by(`subject-id`, `activity label`) %>%
mutate(timestamp = (timestamp - first(timestamp))/10E8))
推荐阅读
- reactjs - 使用 JWT 和 axios 保持用户登录的最佳方法
- java - jdk12中appletviewer的替代方案
- ajax - 在 AJAX 调用 Laravel 后重定向到不同的视图
- python - 如何将str转换为int
- c# - 在派生的嵌套类中调用父函数
- ionic3 - 将base64图像从库中选择发送到Ionic3中的服务器
- android - 注入类型的演示者导致错误(moxy)
- excel - 在线存储 Power Query 自定义函数(Github 等)并调用它
- java - 欧几里得算法得出错误结论
- node.js - 无法使用 Admin SDK 在 Firestore 模拟器中获取 FieldValue.increment