周期数据类型为R的If语句

周期数据类型为R的If语句,r,time,lubridate,R,Time,Lubridate,在R中使用time类有时会有点挑战性 我的数据集是一列日时间(H/M/S)。然而,当我导入数据集时,R将其分类为chr 我想做的是创建一个附加列,如果时间在10.30.00之后,则该列的值等于1,否则0 通过lubridate,我成功地将数据转换为期间数据类型: db%>%dplyr::select(Time)%%>%mutate(Time=lubridate::hms(Time)) 然而,我不知道如何将if语句应用于classPeriod的结果列Time,如下所示: %%>%ifelse(时间

在R中使用
time
类有时会有点挑战性

我的数据集是一列日时间(
H/M/S
)。然而,当我导入数据集时,R将其分类为
chr

我想做的是创建一个附加列,如果时间在
10.30.00
之后,则该列的值等于
1
,否则
0

通过lubridate,我成功地将数据转换为
期间
数据类型:

db%>%dplyr::select(Time)%%>%mutate(Time=lubridate::hms(Time))

然而,我不知道如何将if语句应用于class
Period
的结果列
Time
,如下所示:

%%>%ifelse(时间>10小时30分钟,1,0)

不起作用

有没有关于如何完成这项简单任务的提示?非常感谢

您可以执行以下操作

library(dplyr)
library(lubridate)

data <- tibble(time = hms(c('10:29:30', '14:12:55')))

data %>%
  mutate(after = if_else(time > hms('10:30:00'), 1, 0))

#   time        after
#   <Period>    <dbl>
# 1 10H 29M 30S     0
# 2 14H 12M 55S     1
库(dplyr)
图书馆(lubridate)
数据%
变异(之后=如果其他(时间>hms('10:30:00'),1,0))
#之后
#       
#1 10H 29M 30S 0
#2 14H 12M 55S 1

一个选项是使用
as.integer强制执行
integer

library(lubridate)
library(dplyr)
data %>% 
   mutate(after = as.integer(time > hms('10:30:00')))
# A tibble: 2 x 2
#  time        after
#  <Period>    <int>
#1 10H 29M 30S     0
#2 14H 12M 55S     1
库(lubridate)
图书馆(dplyr)
数据%>%
变异(之后=as.integer(时间>hms('10:30:00'))
#一个tibble:2x2
#之后
#      
#1 10H 29M 30S 0
#2 14H 12M 55S 1
数据
数据在这种情况下,您还可以使用
+(时间>hms('10:30:00'))
data <- tibble(time = hms(c('10:29:30', '14:12:55')))