让我们假设我有以下data.frame:
df = data.frame(x = c(1,3,5,6,8,11,15,16,18,20,21,22,24,25,40,50,54,55,70,71,100,101,102,103))
我需要找出非连续x值之间的滞后。这意味着真实地做: 3-1,5-3,8-6,11-8,15-11,18-16,20-18,24-22等.
有什么建议吗?
发布于 2019-05-06 11:32:45
我们可以接受所有值之间的差异,但只保留那些不连续的值。
with(df, diff(x)[diff(x) != 1])
#[1] 2 2 2 3 4 2 2 2 15 10 4 15 29
发布于 2019-05-06 11:52:17
采用@Ronak的方法,我们可以通过dplyr
实现以下目标:
library(dplyr)
df %>%
transmute(x=lead(x,1)-x) %>%
filter(x!=1)
x
1 2
2 2
3 2
4 3
5 4
6 2
7 2
8 2
9 15
10 10
11 4
12 15
13 29
发布于 2019-05-06 12:45:24
使用head
,tail
来得到差异。
with(df, {i1 <- tail(x, -1) - head(x, -1); i1[i1 != 1]})
#[1] 2 2 2 3 4 2 2 2 15 10 4 15 29
注:未重新计算两次
https://stackoverflow.com/questions/56004204
复制相似问题