(Rstudio)假设我有一个数据集:
# Circle X Y
1 A 21 8
2 A 32 17
3 A 23 32
4 B 22 4
5 B 43 12
6 C 12 4
.....我需要在每个时间帧上找到每个圆圈的瞬时速度。因为第1行是起点,所以速度是0,对于每个圆的(X,Y)坐标,我想要达到的公式是sqrt((x2-x1)^ 2 +(y2-y1)^2/2),其中x2和x1来自前一行(例如,第1行和第2行,第2行和第3行)。我希望得到的最后结果如下:
# Circle X Y Instant velocity
1 A 21 8 0
2 A 32 17 sqrt(((32-21)^2 + (17-8)^2)/2))
3 A 23 32 sqrt(((23-32)^2 + (32-17)^2)/2))
4 B 22 4 0
5 B 43 12 sqrt(((43-22)^2 + (12-4)^2)/2))
6 C 12 4 0
.....有人能帮我在Rstudio上实现这一点吗?
发布于 2021-03-03 17:38:32
在您的代码示例中,您的)比(多一个,这使我对/2的去向有些困惑,但是如果您验证了我的语法,应该可以这样做:
library(dplyr)
your_data %>%
group_by(Circle) %>%
mutate(
instant_velocity = coalesce(sqrt(((x - lag(x))^2 + (y - lag(y))^2)/2), 0)
)https://stackoverflow.com/questions/66461948
复制相似问题