我想做的是创建一个新列,该列将可计费的任务拆分,并将taskHRS分配给该列(广播),并将小时数分配为true和false,而不会影响其他列。
我正在使用但未获得预期结果的代码:
Exp <- Timesheets %>%
mutate(taskDate = as.Date(taskDate)) %>%
mutate(taskMinutes = as.numeric(taskMinutes)) %>%
select('jobID', 'jobTaskID', 'taskStaffName', 'taskDate', 'taskBillable','taskMinutes', 'which_payday') %>%
group_by(jobID, taskStaffName, taskDate, taskBillable, which_payday) %>%
summarise(taskHRS = sum(taskMinutes/60)) %>%
filter(which_payday %in% c('ThisFN'))
print(Exp)
Exp <- Exp %>%
cast(taskStaffName ~ taskBillable ~ jobID, value = 'taskHRS')
所需结果样本:
JobID taskStaffName taskDate true false which_payday Budget
W20100 L 2/10/2018 2 1 ThisFN 80
数据样本:
jobID taskStaffName taskDate taskBillable which_payday taskHRS Budget
<chr> <chr> <date> <chr> <chr> <dbl> <dbl>
1 W210125 L 2018-11-13 true ThisFN 1.5 80
2 W210125 R 2018-11-12 true ThisFN 2 80
3 W210125 R 2018-11-13 true ThisFN 2 80
4 W210125 T 2018-11-13 true ThisFN 2 80
5 W210233 C 2018-11-12 true ThisFN 6 80
答案 0 :(得分:0)
好吧,我找到了解决此问题的方法。我已经创建了以下代码,可以达到我想要的结果。
图书馆(tidyr)
Exp <- Timesheets %>%
mutate(taskDate = as.Date(taskDate)) %>%
mutate(taskMinutes = as.numeric(taskMinutes)) %>%
select('jobID', 'jobTaskID', 'taskStaffName', 'taskDate', 'taskBillable','taskMinutes', 'which_payday') %>%
group_by(jobID, taskStaffName, taskDate, taskBillable, which_payday) %>%
summarise(taskHRS = sum(taskMinutes/60))
library(tidyr)
Exp <- Exp %>%
spread(taskBillable, taskHRS)
我希望这可以帮助处理类似问题的任何人。
我得到的结果就是我想要的
JobID taskStaffName taskDate true false which_payday Budget
W20100 L 2/10/2018 2 1 ThisFN 80*