R中相同ID的多个事件的时间差

R中相同ID的多个事件的时间差,r,dplyr,R,Dplyr,我是Stackoverflow的新手,看过类似的文章,但找不到一个可以从同一ID的多个事件中捕获时间差的解决方案 我得到的是: Time<-c('2016-10-04','2016-10-18', '2016-10-04','2016-10-18','2016-10-19','2016-10-28','2016-10-04','2016-10-19','2016-10-21','2016-10-22', '2017-01-02', '2017-03-04') Value<-c(0,1

我是Stackoverflow的新手,看过类似的文章,但找不到一个可以从同一ID的多个事件中捕获时间差的解决方案

我得到的是:

Time<-c('2016-10-04','2016-10-18', '2016-10-04','2016-10-18','2016-10-19','2016-10-28','2016-10-04','2016-10-19','2016-10-21','2016-10-22', '2017-01-02', '2017-03-04')
Value<-c(0,1,0,1,0,0,0,1,0,1,1,0)
StoreID<-c('a','a','b','b','c','c','d','d','a','a','d','c')
Unit<-c(1,1,2,2,5,5,6,6,1,1,6,5)
Helper<-c('a1','a1','b2','b2','c5','c5','d6','d6','a1','a1','d6','c5')
有什么想法吗

我在用dplyr思考一些事情,但我不知道该往哪里走

创建一个标题列,该列结合值列和区分重复项的行号,然后扩展为宽格式:

未使用按StoredID和Unit分组的helper列


%s和v=%s是什么?%s是格式化字符串的占位符。基本上,它在sprintf中接受其他参数并将它们放在%ss的位置。例如,sprintf'ab%s',5将给出ab5。rankx中的错误,ties.method=first,na.last=keep:缺少参数x,没有默认值-有什么想法吗?我还没有完全学会如何在R中调试,您使用的是什么dplyr版本?尝试用seq_lenn.dplyr 0.7.2替换row_number,但我也在使用stringr进行一些早期处理
    Store_ID  Unit    Helper    Time(v=0)      Time(v=1)       Time2(v=0)    Time 2(v=1)
     a         1       a1      2016-10-04    2016-10-18      2016-10-21 2016-10-22
     b         2       b2      2016-10-04    2016-10-18 
     c         5       c5      2016-10-19    2016-10-28      2017-03-04
     d         6       d6      2016-10-04    2017-10-19
df <- data.frame(StoreID, Unit, Time, Value)

df %>% 
    group_by(StoreID, Unit, Value) %>% 
    mutate(Headers = sprintf('Time %s (v=%s)', row_number(), Value)) %>% 
    ungroup() %>% select(-Value) %>% 
    spread(Headers, Time)

# A tibble: 4 x 7
#  StoreID  Unit `Time 1 (v=0)` `Time 1 (v=1)` `Time 2 (v=0)` `Time 2 (v=1)` `Time 3 (v=0)`
#*  <fctr> <dbl>         <fctr>         <fctr>         <fctr>         <fctr>         <fctr>
#1       a     1     2016-10-04     2016-10-18     2016-10-21     2016-10-22             NA
#2       b     2     2016-10-04     2016-10-18             NA             NA             NA
#3       c     5     2016-10-19             NA     2016-10-28             NA     2017-03-04
#4       d     6     2016-10-04     2016-10-19             NA     2017-01-02             NA