R中相同ID的多个事件的时间差
我是Stackoverflow的新手,看过类似的文章,但找不到一个可以从同一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
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