首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中具有句点数据类型的If语句

在R中具有句点数据类型的If语句
EN

Stack Overflow用户
提问于 2020-10-03 01:59:17
回答 2查看 48关注 0票数 2

在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)

不起作用。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-03 02:19:44

您可以执行以下操作。

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2020-10-03 06:01:12

一种选择是使用as.integer强制使用integer

代码语言:javascript
运行
复制
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

数据

代码语言:javascript
运行
复制
data <- tibble(time = hms(c('10:29:30', '14:12:55')))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64176267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档