首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找出非连续观测之间的滞后

找出非连续观测之间的滞后
EN

Stack Overflow用户
提问于 2019-05-06 11:22:12
回答 6查看 107关注 0票数 0

让我们假设我有以下data.frame:

代码语言:javascript
运行
复制
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等.

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-05-06 11:32:45

我们可以接受所有值之间的差异,但只保留那些不连续的值。

代码语言:javascript
运行
复制
with(df, diff(x)[diff(x) != 1])
#[1]  2  2  2  3  4  2  2  2 15 10  4 15 29
票数 4
EN

Stack Overflow用户

发布于 2019-05-06 11:52:17

采用@Ronak的方法,我们可以通过dplyr实现以下目标:

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-05-06 12:45:24

使用headtail来得到差异。

代码语言:javascript
运行
复制
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

注:未重新计算两次

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56004204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档