将 hms 列拆分为 30 分钟的间隔
Split hms column into 30 minute intervals
我有运动测试期间的参与者数据,其中包括参与者 ID、条件(环境或控制)和完成测试所需的总时间。我的数据的一个小例子:
RawData <- data.frame(
ParticipantID = c (1:6),
Condition = c("Control","Experimental","Experimental","Control","Experimental","Control"),
Time = c("04:34:22","02:48:47","04:22:06","02:57:11","02:07:11","05:34:22"))
然后我使用了 lubridate
包,所以我有时间在 hms
通过:
RawData <- RawData %>%
mutate(TotalTime = hms::as_hms(Time))
现在我想创建一个新列,将每个 RawData$TotalTime
结果归入一个类别,包括:Sub2、Sub230、Sub3、Sub330、Sub4、Sub430、Sub5、Sub530 和 Sub6。我可能可以通过一个很长的 case_when
语句来做到这一点,但是在 lubridate
中有没有一种简单的方法可以做到这一点,因为我是在 30 分钟的间隔之后?
我想要的输出是:
RawData <- data.frame(
ParticipantID = c (1:6),
Condition = c("Control","Experimental","Experimental","Control","Experimental","Control"),
Time = c("04:34:22","02:48:47","04:22:06","02:57:11","02:07:11","05:34:22"),
Category = c("Sub5","Sub3","Sub430","Sub3","Sub230","Sub6"))
谢谢!
您可以将 ceiling_date
函数与 units
一起用作“30 分钟”。
library(dplyr)
library(lubridate)
RawData %>%
mutate(TotalTime = as.POSIXct(Time, format = '%T'),
Category = format(ceiling_date(TotalTime, '30 mins'), "%H%M")) %>%
select(-TotalTime)
# ParticipantID Condition Time Category
#1 1 Control 04:34:22 0500
#2 2 Experimental 02:48:47 0300
#3 3 Experimental 04:22:06 0430
#4 4 Control 02:57:11 0300
#5 5 Experimental 02:07:11 0230
#6 6 Control 05:34:22 0600
我有运动测试期间的参与者数据,其中包括参与者 ID、条件(环境或控制)和完成测试所需的总时间。我的数据的一个小例子:
RawData <- data.frame(
ParticipantID = c (1:6),
Condition = c("Control","Experimental","Experimental","Control","Experimental","Control"),
Time = c("04:34:22","02:48:47","04:22:06","02:57:11","02:07:11","05:34:22"))
然后我使用了 lubridate
包,所以我有时间在 hms
通过:
RawData <- RawData %>%
mutate(TotalTime = hms::as_hms(Time))
现在我想创建一个新列,将每个 RawData$TotalTime
结果归入一个类别,包括:Sub2、Sub230、Sub3、Sub330、Sub4、Sub430、Sub5、Sub530 和 Sub6。我可能可以通过一个很长的 case_when
语句来做到这一点,但是在 lubridate
中有没有一种简单的方法可以做到这一点,因为我是在 30 分钟的间隔之后?
我想要的输出是:
RawData <- data.frame(
ParticipantID = c (1:6),
Condition = c("Control","Experimental","Experimental","Control","Experimental","Control"),
Time = c("04:34:22","02:48:47","04:22:06","02:57:11","02:07:11","05:34:22"),
Category = c("Sub5","Sub3","Sub430","Sub3","Sub230","Sub6"))
谢谢!
您可以将 ceiling_date
函数与 units
一起用作“30 分钟”。
library(dplyr)
library(lubridate)
RawData %>%
mutate(TotalTime = as.POSIXct(Time, format = '%T'),
Category = format(ceiling_date(TotalTime, '30 mins'), "%H%M")) %>%
select(-TotalTime)
# ParticipantID Condition Time Category
#1 1 Control 04:34:22 0500
#2 2 Experimental 02:48:47 0300
#3 3 Experimental 04:22:06 0430
#4 4 Control 02:57:11 0300
#5 5 Experimental 02:07:11 0230
#6 6 Control 05:34:22 0600