按ID但在7天内设置数据框

时间:2016-06-01 12:42:18

标签: r dplyr

我的数据框有两个变量IDarrival。这是我数据框的负责人:

head(sun_2)
Source: local data frame [6 x 2]

         ID  arrival
      (chr)   (dats)
1 027506905 01.01.15     
2 042363988 01.01.15    
3 026050529 01.01.15    
4 028375072 01.01.15    
5 055384859 01.01.15     
6 026934233 01.01.15 

我如何按ID天到达的7对数据进行分组?

2 个答案:

答案 0 :(得分:0)

就像许多其他人所说的那样,如果没有更多的信息(例如原始观察的内容),我们无法做出一些假设,无法准确了解您的问题。

我假设您有一列数据表明原始日期?并且这些行的格式为as.Date

#generate Data
Data <- data.frame(ID = as.character(1394:2394),
               arrival = sample(seq(as.Date('2015/01/01'), as.Date('2016/01/01'), by = 'day'), 1001, replace = TRUE))

# Make the "Original Observation" Variable
delta_times <- sample(c(3:10), 1001, replace = TRUE)
Data$First <- Data$arrival - delta_times

这给了我一个看起来像这样的数据集

    ID    arrival      First
1 1394 2015-11-06 2015-10-28
2 1395 2015-08-04 2015-07-26
3 1396 2015-04-19 2015-04-16
4 1397 2015-05-13 2015-05-03
5 1398 2015-07-18 2015-07-11
6 1399 2015-01-08 2015-01-03

如果是这种情况,则解决方案是使用difftime,如下所示:

# Now we need to make a subsetting variables
Data$diff_times <- difftime(Data$arrival, Data$First, units = "days")
Data$diff_times

within_7 <- subset(Data, diff_times <=7)

max(within_7$diff_times)
Time difference of 7 days

答案 1 :(得分:0)

根据您提供的信息确定有点困难,但我认为您可以这样做:

library(dplyr)
dt %>% group_by(ID) %>% filter(arrival < min(arrival) + 7)