按 Activity 将日历条目转换为每天时间
Convert Calendar Entries to Time Per Day by Activity
现在我在 R 中有一个数据集,如下所示:
date Activity minutes hours
1 2021-09-29 run 35 0.583
2 2021-09-30 drive 10 0.167
3 2021-09-30 run 90 1.5
4 2021-09-30 sleep 540 9
5 2021-10-01 drive 15 0.25
6 2021-10-01 sleep 500 8.33
7 2021-10-02 sleep 600 10
8 2021-10-03 run 55 0.917
9 2021-10-03 sleep 420 7
10 2021-10-04 sleep 500 8.33
我想将其转换为汇总每天 运行 花费的时间和每天花费的睡眠时间的数据集:
date time_running time_sleeping
1 2021-09-29
2 2021-09-30
3 2021-10-01
4 2021-10-02
5 2021-10-03
6 2021-10-04
有人有什么想法吗?
谢谢!
不确定您想要的结果,但我正在试一试!所以请在下面找到一个小包 data.table
:
REPREX
- 代码
library(data.table)
dcast(DT, date ~ Activity, value.var = "hours")
- 输出:
#> date drive run sleep
#> 1: 2021-09-29 NA 0.583 NA
#> 2: 2021-09-30 0.167 1.500 9.00
#> 3: 2021-10-01 0.250 NA 8.33
#> 4: 2021-10-02 NA NA 10.00
#> 5: 2021-10-03 NA 0.917 7.00
#> 6: 2021-10-04 NA NA 8.33
- 数据:
DT <- data.table(date = c("2021-09-29", "2021-09-30", "2021-09-30", "2021-09-30",
"2021-10-01", "2021-10-01", "2021-10-02", "2021-10-03",
"2021-10-03", "2021-10-04"),
Activity = c("run", "drive", "run", "sleep", "drive", "sleep",
"sleep", "run", "sleep", "sleep"),
minutes = c(35, 10, 90, 540, 15, 500, 600, 55, 420, 500),
hours = c(0.583, 0.167, 1.5, 9, 0.25, 8.33, 10, 0.917, 7, 8.33))
DT
#> date Activity minutes hours
#> 1: 2021-09-29 run 35 0.583
#> 2: 2021-09-30 drive 10 0.167
#> 3: 2021-09-30 run 90 1.500
#> 4: 2021-09-30 sleep 540 9.000
#> 5: 2021-10-01 drive 15 0.250
#> 6: 2021-10-01 sleep 500 8.330
#> 7: 2021-10-02 sleep 600 10.000
#> 8: 2021-10-03 run 55 0.917
#> 9: 2021-10-03 sleep 420 7.000
#> 10: 2021-10-04 sleep 500 8.330
由 reprex package (v0.3.0)
于 2021-10-11 创建
现在我在 R 中有一个数据集,如下所示:
date Activity minutes hours
1 2021-09-29 run 35 0.583
2 2021-09-30 drive 10 0.167
3 2021-09-30 run 90 1.5
4 2021-09-30 sleep 540 9
5 2021-10-01 drive 15 0.25
6 2021-10-01 sleep 500 8.33
7 2021-10-02 sleep 600 10
8 2021-10-03 run 55 0.917
9 2021-10-03 sleep 420 7
10 2021-10-04 sleep 500 8.33
我想将其转换为汇总每天 运行 花费的时间和每天花费的睡眠时间的数据集:
date time_running time_sleeping
1 2021-09-29
2 2021-09-30
3 2021-10-01
4 2021-10-02
5 2021-10-03
6 2021-10-04
有人有什么想法吗? 谢谢!
不确定您想要的结果,但我正在试一试!所以请在下面找到一个小包 data.table
:
REPREX
- 代码
library(data.table)
dcast(DT, date ~ Activity, value.var = "hours")
- 输出:
#> date drive run sleep
#> 1: 2021-09-29 NA 0.583 NA
#> 2: 2021-09-30 0.167 1.500 9.00
#> 3: 2021-10-01 0.250 NA 8.33
#> 4: 2021-10-02 NA NA 10.00
#> 5: 2021-10-03 NA 0.917 7.00
#> 6: 2021-10-04 NA NA 8.33
- 数据:
DT <- data.table(date = c("2021-09-29", "2021-09-30", "2021-09-30", "2021-09-30",
"2021-10-01", "2021-10-01", "2021-10-02", "2021-10-03",
"2021-10-03", "2021-10-04"),
Activity = c("run", "drive", "run", "sleep", "drive", "sleep",
"sleep", "run", "sleep", "sleep"),
minutes = c(35, 10, 90, 540, 15, 500, 600, 55, 420, 500),
hours = c(0.583, 0.167, 1.5, 9, 0.25, 8.33, 10, 0.917, 7, 8.33))
DT
#> date Activity minutes hours
#> 1: 2021-09-29 run 35 0.583
#> 2: 2021-09-30 drive 10 0.167
#> 3: 2021-09-30 run 90 1.500
#> 4: 2021-09-30 sleep 540 9.000
#> 5: 2021-10-01 drive 15 0.250
#> 6: 2021-10-01 sleep 500 8.330
#> 7: 2021-10-02 sleep 600 10.000
#> 8: 2021-10-03 run 55 0.917
#> 9: 2021-10-03 sleep 420 7.000
#> 10: 2021-10-04 sleep 500 8.330
由 reprex package (v0.3.0)
于 2021-10-11 创建