如何在R的列中操作基本功能?

时间:2018-07-05 18:21:41

标签: r euclidean-distance

对于这个问题的措辞不好,我深表歉意,我仍然是R语言的初学者,并且我仍然习惯于正确的术语。我在下面提供了示例数据:

mydata <- data.frame(x = c(1, 2, 7, 19, 45), y=c(10, 12, 15, 19, 24))
View(mydata)

我的目的是找到x速度,为此,我需要找到1与2、2与7、7与19之间的差,依此类推。我该怎么办?

2 个答案:

答案 0 :(得分:3)

您可以使用diff函数。

> diffs <- as.data.frame(diff(as.matrix(mydata)))
> diffs
   x y
1  1 2
2  5 3
3 12 4
4 26 5
> mean(diffs$x)
[1] 11

答案 1 :(得分:2)

您可以使用dplyr::lead()dplyr::lag(),具体取决于您希望计算如何排列

library(dplyr)

mydata <- data.frame(x = c(1, 2, 7, 19, 45), y=c(10, 12, 15, 19, 24))
View(mydata)
mydata %>% 
  mutate(x_speed_diff_lead = lead(x) - x
         , x_speed_diff_lag = x - lag(x))

#    x  y x_speed_diff_lead x_speed_diff_lag
# 1  1 10                 1               NA
# 2  2 12                 5                1
# 3  7 15                12                5
# 4 19 19                26               12
# 5 45 24                NA               26