r - 如何投射 df 的一部分但仍保留其他一些列
问题描述
我想要做的是创建一个新列,该列拆分任务计费并将 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
解决方案
好吧,我找到了解决这个问题的方法。我创建了以下代码来实现我想要的结果。
图书馆(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*
推荐阅读
- laravel - Laravel 雄辩的响应转换,无需 foreach 循环
- memory - moviepy 错误,“无法收集内存”或“内存泄漏”或“内存溢出”
- python-3.x - 如何处理 Python 字典中缺少的键
- elasticsearch - CURL:不支持 Content-Type 标头 [application/x-www-form-urlencoded]
- c# - 加载 WinForm 时禁用自动选择 RadListControl 中的第一项
- reactjs - React Redux 加载栏未显示
- android - 将 Json 解析为 Object 获取异常 begin_object 但为 begin_array
- performance-testing - 如何在加载运行器 - vugen 中记录在 Web 应用程序中打开 PDF 文件的事件?
- android - 使用android数据绑定刷新活动布局
- php - 如何在php中找到第二天的第二天