#r #date
#r #Дата
Вопрос:
У меня есть фрейм данных, который похож на dd
where
dd = data.frame(date = as.Date(c("2014-04-29", "2014-04-29","2014-04-29", "2014-04-29", "2014-04-29", "2014-04-29"), format ="%Y-%m-%d"), hh = 1:6, mm = seq(0, 50, 10))
Я хочу создать новые переменные, вызвать их time1
и time2
, где
time1
время суток, независимо от даты, например: в строке 1time1 = 01:00
[чч: мм] нет записи для секундtime2
isdate time1
; например , для строки 1time2 = 2014-04-29 : 01:00
Любое предложение приветствуется!
Комментарии:
1. База R не имеет типа данных только для времени (только дата время). Вы можете либо сохранить его в виде строки, либо установить значение контрольной даты для объединения со временем. При желании вы можете использовать какую-либо другую библиотеку, которая может иметь такой тип данных.
2. Пакет chron имеет
times
класс.
Ответ №1:
Проверьте lubridate
пакет:
library(lubridate)
dd$time1 <- with(dd, hm(paste(hh, mm, sep=":")))
dd$time2 <- with(dd, ymd(dd$date) time1)
Ответ №2:
Использование базового R
dd$time1 <- format(strptime(paste0(dd$hh, ":", dd$mm), "%H:%M"), "%H:%M")
dd$time2 <- format(strptime(paste0(dd$date, ":", dd$hh, ":", dd$mm), "%Y-%m-%d:%H:%M"), "%Y-%m-%d : %H:%M")
Что приведет к
dd$time1
## [1] "01:00" "02:10" "03:20" "04:30" "05:40" "06:50"
dd$time2
## [1] "2014-04-29 : 01:00" "2014-04-29 : 02:10" "2014-04-29 : 03:20" "2014-04-29 : 04:30"
##v[5] "2014-04-29 : 05:40" "2014-04-29 : 06:50"
Однако они не будут Date
вводиться (см. Комментарий @MrFlick)