如何在Mac上组合R中的时间和日期变量



与此主题类似的问题以前可能被问过。但是,我以前搜索并尝试过大多数类似的材料,但我无法解决我的问题。我在Mac上使用R。我有一个数据集(DF1(,其中有一个Date列和一个Time列,类为"POSIXct"POSIXt"。我想通过"Date_Time"将此数据集与另一个数据集DF2(具有相同的类列(合并,该数据集是Date和Time列的组合。首先,当我将数据集从Excel导入到R(在Mac上(时,"时间"列中的所有值在时间旁边都会得到一个值1899-12-31,例如1899-12-31:08:33:00。在保留时间变量类(POSIXct"POSIXt(的同时,我应该如何删除它?然后,为了合并时间和日期列,我使用paste()如下:

DF1$Date_Time <- paste(DF1$DATE , DF1$TIME)

然而,在我合并Date和Time列之后,新Date_Time列的类变成了"character",而不是"POSIXct"POSIXt"。因此,我尝试了不同的方法来更改Date_Time列的类,例如

strftime(DF1$Date_Time , format = "%Y-%m-%d %H:%M:%S" , tz="UTC")
strptime(DF1$Date_Time , format = "%Y-%m-%d %H:%M:%S" , tz="UTC")
as.POSIXct(DF1$Date_Time , format = "%Y-%m-%d %H:%M:%S" , tz="UTC")
ymd_hms(DF1$Date_Time , tz = "UTC")

然而,它们都不起作用。总之,我需要一个类为"POSIXct"POSIXt"的Date_Time变量,因为在这一步之后,我需要计算以分钟为单位的时间差,正如你所知,字符和因子的类不适用于此。我也尝试了另一种方式。我在Excel中创建了Date_Time列(在导入到R之前(,并在Excel中将格式更改为时间格式。然后,我导入了R中的excel文件,并注意到Date_Time的类仍然是"character"。谢谢你的帮助。

编辑:这是DF1:的示例

DF1 <- structure(list(No. = c(1, 2, 3, 4), Time = 
structure(c(-2209044420, 
-2209044360, -2209044300, -2209044240), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), Date = structure(c(1559433600, 1559433600, 
1559433600, 1559433600), class = c("POSIXct", "POSIXt"), tzone = 
"UTC")), row.names = c(NA, 
-4L), class = c("tbl_df", "tbl", "data.frame"))

我们可以一起提取DateTimepaste的值,并将其转换为POSIXct格式。

new_data <- transform(transform(DF1, Date = as.Date(Date), 
Time = format(Time, "%T")),
DateTime = as.POSIXct(paste(Date, Time), tz = "UTC"))
new_data
#  No.     Time       Date            DateTime
#1   1 08:33:00 2019-06-02 2019-06-02 08:33:00
#2   2 08:34:00 2019-06-02 2019-06-02 08:34:00
#3   3 08:35:00 2019-06-02 2019-06-02 08:35:00
#4   4 08:36:00 2019-06-02 2019-06-02 08:36:00

使用dplyrlubridate

library(dplyr)
library(lubridate)
DF1 %>%
mutate(Date = as.Date(Date), Time = format(Time, "%T"), 
DateTime = ymd_hms(paste(Date, Time)))

最新更新