У меня есть df, похожий на df1, где я хочу разбить строки так, чтобы столбец Hrs_Time_Worked имел интервалы 4, как показано в df2.
Я использовал следующий код, но он выдает ошибку:
df2 = df1 %>%
group_by(Row)%>%
mutate(S=START_DATE_TIME,
Hrs_Time_Worked=list((n<-c(rep(4,Hrs_Time_Worked%/%4),Hrs_Time_Worked%%4))[n!=0]))%>%
unnest()%>%
mutate(E=START_DATE_TIME+hours(cumsum(Hrs_Time_Worked)),
S=E-hours(unlist(Hrs_Time_Worked)),
START_DATE_TIME=(S),
END_DATE_TIME=(E),
S=NULL,E=NULL)
Ошибка в mutate_impl (.data, dots): Ошибка оценки: недопустимый класс Объект Period:периоды должны иметь целочисленные значения.
Требуется следующее:
Все категориальные данные должны оставаться одинаковыми в дочерних строках (например, TIME_RPTG_CD остается одинаковым в каждой дочерней строке)
Если есть остаток, который меньше четырех, сумма остатка должна быть указана в последней строке (например, df2; строка 3)
Если дочерняя строка начинается или заканчивается на следующую датустолбец даты должен быть обновлен соответствующим образом (например, df2; строка 2-3)
df1 (текущий)
Row EMPLID TIME_RPTG_CD START_DATE_TIME END_DATE_TIME Hrs_Time_Worked
<chr> <chr> <dttm> <dttm> <dbl>
1 X00007 REG 2014-07-03 16:00:00 2014-07-03 02:00:00 10.0
df2 (желательно)
Row EMPLID TIME_RPTG_CD START_DATE_TIME END_DATE_TIME Hrs_Time_Worked
<chr> <chr> <dttm> <dttm> <dbl>
1 X00007 REG 2014-07-03 16:00:00 2014-07-03 20:00:00 4.0
2 X00007 REG 2014-07-03 20:00:00 2014-07-04 24:00:00 4.0
3 X00007 REG 2014-07-04 24:00:00 2014-07-04 02:00:00 2.0