Splitting single data frame row into multiple rows while performing calculation

↘锁芯ラ 提交于 2019-12-05 12:48:02
library(tidyverse)
library(lubridate)
df1%>%
 group_by(Row)%>%
 mutate(S=paste(START_DATE,START_TIME),
        HOURS=list((n<-c(rep(4,HOURS%/%4),HOURS%%4))[n!=0]))%>%
 unnest()%>%
 mutate(E=dmy_hm(S)+hours(cumsum(HOURS)),
        S=E-hours(unlist(HOURS)),
        START_DATE=format(S,"%d-%b-%y"),
        END_DATE=format(E,"%d-%b-%y"),
        START_TIME=format(S,"%H:%M"),
        END_TIME=format(E,"%H:%M"),S=NULL,E=NULL)
# A tibble: 6 x 9
# Groups:   Row [3]
  Row      ID UNIT  CODE  START_DATE END_DATE  START_TIME END_TIME HOURS
  <chr> <int> <chr> <chr> <chr>      <chr>     <chr>      <chr>    <dbl>
1 A         1 3ESD  REG   06-Aug-14  06-Aug-14 01:00      05:00       4.
2 A         1 3ESD  REG   06-Aug-14  06-Aug-14 05:00      07:00       2.
3 B         2 3E14E OE2   12-Aug-14  13-Aug-14 21:00      01:00       4.
4 C         3 3E5E  REG   19-Aug-14  20-Aug-14 21:00      01:00       4.
5 C         3 3E5E  REG   20-Aug-14  20-Aug-14 01:00      05:00       4.
6 C         3 3E5E  REG   20-Aug-14  20-Aug-14 05:00      07:00       2.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!