【问题标题】:How to subset by time range?如何按时间范围进行子集化?
【发布时间】:2018-10-02 01:54:51
【问题描述】:

我想从以下数据框示例创建一个子集。条件是选择时间列值属于时间范围的那些行,从某个 id 的最短时间到下一个,比如说一小时。

    id    time
    1   1468696537          
    1   1468696637          
    1   1482007490          
    2   1471902849          
    2   1471902850          
    2   1483361074          
    3   1474207754          
    3   1474207744          
    3   1471446673          
    3   1471446693  

输出应该是这样的:

   id    time
    1   1468696537          
    1   1468696637          
    2   1471902849          
    2   1471902850          
    3   1471446673          
    3   1471446693  

请帮我怎么做?

【问题讨论】:

    标签: r time conditional-statements subset


    【解决方案1】:

    我们可以做到以下几点:

    library(magrittr);
    library(dplyr);
    df %>%
        group_by(id) %>%
        filter(time <= min(time) + 3600)
    #     id       time
    #  <int>      <int>
    #1     1 1468696537
    #2     1 1468696637
    #3     2 1471902849
    #4     2 1471902850
    #5     3 1471446673
    #6     3 1471446693
    

    说明:按id 对条目进行分组,然后将min(time) + 1 hour 中的filter 条目分组。


    样本数据

    df <- read.table(text =
        "   id    time
        1   1468696537
        1   1468696637
        1   1482007490
        2   1471902849
        2   1471902850
        2   1483361074
        3   1474207754
        3   1474207744
        3   1471446673
        3   1471446693  ", header = T)
    

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2013-10-25
      • 1970-01-01
      • 2020-06-13
      • 2016-10-21
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多