как отлить часть df, но все еще сохраняя некоторые другие столбцы - PullRequest
0 голосов
/ 14 ноября 2018

То, что я хочу сделать, - это создать новый столбец, который разделяет оплачиваемые задачи и выделяет 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

1 Ответ

0 голосов
/ 15 ноября 2018

Ну, я нашел решение этой проблемы. Я создал следующий код для достижения желаемого результата.

библиотека (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*
...