计算每个ID的A组与其上方行之间的日期差异(以天为单位)

时间:2017-02-06 09:54:20

标签: r dplyr data-cleaning

这是我的df(data.frame):

      id   group     date
[1]    1     B    2000-01-01
[2]    1     B    2001-02-11  
[3]    1     A    2001-04-06   
[4]    2     C    2000-02-01
[5]    2     A    2001-01-01
[6]    2     B    2004-11-12 
    ...

data.frame已按ID和日期排列。 我想计算每个id的A组和它上面的行之间的日期(以天为单位)的差异。在我的数据中,每个组A在其上方都有一行用于相同的ID。

我感兴趣的结果看起来像这样

      id       days
[1]    1        54  
[2]    2       335
    ...

请告知

感谢。

3 个答案:

答案 0 :(得分:3)

由于它已经排序,你可以这样做:

false
true
false
false
false
false

给出:

       10
     /   \
    5     4
     \   / \
      4 1   2
     /      / 
    3      1
   / \
  1   1

答案 1 :(得分:2)

以下是使用dplyr

的想法
library(dplyr)

#make sure "date" has the appropriate class
df$date <- as.POSIXct(df$date, format = '%Y-%m-%d')

df %>% 
 group_by(id) %>%
 mutate(diff1 = c(NA, round(diff.difftime(date, units = 'days')))) %>% 
 filter(group == 'A') %>%
 select(id, diff1)

#Source: local data frame [2 x 2]
#Groups: id [2]

#     id diff1
#  <int> <dbl>
#1     1    54
#2     2   335

答案 2 :(得分:0)

我们可以使用 id diff_days <int> <time> 1 1 54 days 2 2 335 days

[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];
UIImage *image = [UIImage imageNamed:@"logoHeader"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleDone target:self action:nil];

self.navigationItem.leftBarButtonItem = backButton;