如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。