你好斯塔克溢出社区,
我目前正在使用一个大型数据集,该数据集包含日期/时间变量和一个数值变量,该变量量化了在一定强度的体力活动中花费的时间。
data_raw <- structure(list(`Bout Start` = c("2/8/2017 9:01:00 AM", "2/8/2017 9:23:00 AM", "2/8/2017 9:42:00 AM", "2/8/2017 11:49:00 AM", "2/8/2017 1:39:00 PM"), `Bout End` = c("2/8/2017 9:12:00 AM", "2/8/2017 9:38:00 AM", "2/8/2017 9:52:00 AM", "2/8/2017 12:05:00 PM", "2/8/2017 1:58:00 PM"),`Time in Bout` = c(11, 15, 10, 16, 19)), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"))
我需要数据集的格式为:
data_processed <- structure(list(Date = structure(c(Date5306 = 17205, Date5307 = 17205, Date5308 = 17205, Date5309 = 17205, Date5310 = 17205), class = "Date"), Hour = structure(c(28800, 32400, 36000, 39600, 43200), class = c("hms", "difftime"), units = "secs"), `Time in Bout (Hourly)` = c(0, 36, 0, 11, 5)), row.names = c(NA, -5L), class = c("tbl_df", "tbl", "data.frame"))
有人能帮我做这个吗?先谢谢你们!
2条答案
按热度按时间kqlmhetl1#
首先,我们需要将
data_raw
中的日期时间字符串转换为实际的日期时间变量:现在,您的数据如下所示:
现在我们需要创建一个小时向量,您需要在该向量上检查回合:
棘手的部分现在只是计算分钟内的每一个小时时,有一场比赛发生:
最后,我们创建结果的数据框架:
创建于2023年2月15日,使用reprex v2.0.2
vfhzx4xs2#
这是一项相当复杂的任务,下面是一种
tidyverse
方法dd1
dd2
中dd1
和dd2
注意,这是一个动态的方法;开始和结束小时/日期一旦出现在原始数据中就显示出来。
连接
dd1
和dd2
,同时分隔Date
和Hour
,并将缺少日期/小时的NA
替换为0
。