0

(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 上实现这一目标???

4

1 回答 1

4

)(你的代码示例中多了一个,这让我对去哪里有点困惑/2,但如果你验证我的语法,这样的东西应该可以工作:

library(dplyr) 
your_data %>%
  group_by(Circle) %>%
  mutate(
    instant_velocity = coalesce(sqrt(((x - lag(x))^2 + (y - lag(y))^2)/2), 0)
  )
  
于 2021-03-03T17:38:32.117 回答