在R中使用time类有时可能会有一点挑战。
我的数据集是一列日时间(H/M/S)。然而,当我导入数据集时,R将其分类为chr。
我想做的是创建一个额外的列,它的值等于1,以防时间在10.30.00之后,否则为0。
通过lubridate,我成功地将数据转换为Period数据类型:
db %>% dplyr::select(Time) %>% mutate(Time = lubridate::hms(Time))
尽管如此,我并不确切知道如何将if语句应用于类Period的结果列Time,如下所示:
%>% ifelse(Time > 10H 30M 0S, 1, 0)
不起作用。
有什么关于如何完成这项简单任务的提示吗?非常感谢!
发布于 2020-10-03 02:19:44
您可以执行以下操作。
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发布于 2020-10-03 06:01:12
一种选择是使用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数据
data <- tibble(time = hms(c('10:29:30', '14:12:55')))https://stackoverflow.com/questions/64176267
复制相似问题