R中带有周期数据类型的if语句 数据

问题描述

在R中使用time类有时可能会有些挑战。

我的数据集是一列白天时间(H/M/S)。不过,当我导入数据集时,R将其分类chr

我想做的是创建一个附加列,其值等于1,以防时间晚于10.30.00,否则为0

通过lubridate,我设法将数据转换为Period数据类型:

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

尽管如此,我仍然不知道如何将if语句应用到类Time的结果列Period上,如下所示:

%>% ifelse(Time > 10H 30M 0S,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
,

一个选项是将SELECT SUM( CASE WHEN shopid = 'shop1' THEN SIGN(times)+SIGN(times2) ELSE 0 END) shop1,SUM( CASE WHEN shopid = 'shop2' THEN SIGN(times)+SIGN(times2) ELSE 0 END) shop2 FROM table3; 强制为integer

as.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