如何按时间范围进行子集化?

时间:2018-04-21 14:58:10

标签: r time conditional-statements subset

我想从以下数据框示例中创建一个子集。条件是选择那些时间列值属于从特定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  

请帮帮我怎么做?

1 个答案:

答案 0 :(得分:2)

我们可以做到以下几点:

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分组,然后filter内的min(time) + 1 hour条目。

样本数据

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)