首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R-将整数转换为小时/分钟

R-将整数转换为小时/分钟
EN

Stack Overflow用户
提问于 2019-06-06 06:17:17
回答 3查看 3.4K关注 0票数 0

感谢你加入这个帖子,我相信这是一个简单的问题,所以它来了。

我有两列,一列表示小时,另一列表示分钟,格式为24:60,两列都是整数,我希望创建一个时间列(?)格式,示例:

代码语言:javascript
复制
Hour(Integer)        Minutes(Integer)        Time Column
      5                     30                  5:30
      7                     27                  7:27
     11                     05                 11:05
     17                     45                 17:45
     22                     15                 22:15

差不多就这些了,谢谢。

编辑: Shree答案仅提供字符

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-06 06:27:12

代码语言:javascript
复制
library(lubridate)
library(tidyverse)
library(stringr)
df <- tribble(
~Hour,~Minutes,
5,30,
7,27,
11,05,
17,45,
22,15)

df %>% 
  mutate(time = str_c(Hour,Minutes,sep = ":")) %>% 
  mutate(time = time %>% hm())
票数 1
EN

Stack Overflow用户

发布于 2019-06-06 06:47:56

有几种方法可以做到这一点,从响应量可以看出这一点。但是我总是发现一种更容易的方法是使用lubridate::parse_date_time,因为它可以解决这个问题以及这个类的许多其他数据操作问题。

代码语言:javascript
复制
df <- data.frame(Hour = c(5,7,11,17,22), 
             Minutes  = c(30,27,05,45,15))

library(dplyr)
library(lubridate)

df <- df %>% 
  dplyr::mutate(Time = format(strptime(lubridate::parse_date_time(paste(Hour, Minutes, sep = ":"), 'H:M'),
                                       "%Y-%m-%d %H:%M:%S"),'%H:%M'))

# Or in a more didactic way
df <- df %>% 
  dplyr::mutate(Time = paste(Hour, Minutes, sep = ":"),
                Time = lubridate::parse_date_time(Time, 'H:M'),
                Time = format(strptime(Time, "%Y-%m-%d %H:%M:%S"),'%H:%M'))
票数 2
EN

Stack Overflow用户

发布于 2019-06-06 06:22:11

这里有一个整齐的解决方案。这只会创建一个字符变量。

代码语言:javascript
复制
library(tidyverse)
library(stringr)

df <- tibble(Hour = c(5,7,11,17,22), Minutes  = c(30,27,05,45,15))

df %>% 
  mutate(Time = str_c(Hour, Minutes, sep = ':'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56468763

复制
相关文章

相似问题

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