谢谢您输入此线程,我相信这是一个简单的问题,所以就到这里了。
我有两列,一列是HOURS,一列是MINUTES,采用24:60格式,这两列都是INTEGERS,我想以TIME(?)格式创建一列,例如:
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的答案只给出了字符
答案 0 :(得分:3)
使用@Bruno的数据的Base R:
androidTestImplementation 'androidx.test:rules:1.2.0'
我特别在通话中加入了paste(df$Hour, df$Minutes, sep=":")
# [1] "5:30" "7:27" "11:5" "17:45" "22:15"
as.POSIXct(paste(df$Hour, df$Minutes, sep=":"), format = "%H:%M", tz = "GMT")
# [1] "2019-06-05 05:30:00 GMT" "2019-06-05 07:27:00 GMT"
# [3] "2019-06-05 11:05:00 GMT" "2019-06-05 17:45:00 GMT"
# [5] "2019-06-05 22:15:00 GMT"
,主要是出于“良好做法”的考虑,因为默认情况下,基数R tz=
函数不应用(这意味着推断,但不包含)状态,您当前的tz)。没有这个就可以正常工作。
请注意,由于我们未在通话中指定日期/日期,因此始终默认为“今天”(运行POSIXt
时)。
答案 1 :(得分:1)
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())
答案 2 :(得分:1)
有多种方法可以执行此操作,正如您可以从响应数量中看出的那样。但是我经常发现比较容易的一种方法是使用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'))
答案 3 :(得分:0)
这是一个整洁的解决方案。这只会创建一个字符变量。
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 = ':'))