感谢你加入这个帖子,我相信这是一个简单的问题,所以它来了。
我有两列,一列表示小时,另一列表示分钟,格式为24:60,两列都是整数,我希望创建一个时间列(?)格式,示例:
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答案仅提供字符
发布于 2019-06-06 06:27:12
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())
发布于 2019-06-06 06:47:56
有几种方法可以做到这一点,从响应量可以看出这一点。但是我总是发现一种更容易的方法是使用lubridate::parse_date_time
,因为它可以解决这个问题以及这个类的许多其他数据操作问题。
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'))
发布于 2019-06-06 06:22:11
这里有一个整齐的解决方案。这只会创建一个字符变量。
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 = ':'))
https://stackoverflow.com/questions/56468763
复制相似问题