对于这个问题的措辞不好,我深表歉意,我仍然是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之间的差,依此类推。我该怎么办?
答案 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