R 中具有句点数据类型的 If 语句
If statement with period data type in R
在 R 中使用 time
class 有时会有点挑战。
我的数据集是白天的单列 (H/M/S
)。然而,当我导入数据集时,R class 将其定义为 chr
.
我想做的是创建一个附加列,其值等于 1
,以防时间在 10.30.00
之后,否则 0
.
通过 lubridate,我设法将数据转换为 Period
数据类型:
db %>% dplyr::select(Time) %>% mutate(Time = lubridate::hms(Time))
不过,我不知道如何将 if 语句应用于 class Period
的结果列 Time
,如下所示:
%>% 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
一个选项是用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')))
在 R 中使用 time
class 有时会有点挑战。
我的数据集是白天的单列 (H/M/S
)。然而,当我导入数据集时,R class 将其定义为 chr
.
我想做的是创建一个附加列,其值等于 1
,以防时间在 10.30.00
之后,否则 0
.
通过 lubridate,我设法将数据转换为 Period
数据类型:
db %>% dplyr::select(Time) %>% mutate(Time = lubridate::hms(Time))
不过,我不知道如何将 if 语句应用于 class Period
的结果列 Time
,如下所示:
%>% 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
一个选项是用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')))