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

问题描述 投票:0回答:1

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

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

但是,在合并“日期”和“时间”列之后,新的“日期时间”列的类变为“字符”,而不是“ 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 variable,因为在此步骤之后,我需要以分钟为单位计算时间差,并且您知道字符和因子的类对此不起作用。我也尝试了另一种方法。我在Excel中创建了Date_Time列(在导入到R中之前),并在excel中将格式更改为时间格式。然后,我在R中导入了该excel文件,并注意到Date_Time类仍然是“字符”。感谢您的帮助。

编辑:这是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"))
r excel
1个回答
0
投票

在R底下,我们可以做:

transform(transform(DF1, Date = as.Date(Date), Time = format(Time, "%T")),
                         DateTime = as.POSIXct(paste(Date, Time), tz = "UTC"))

#  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
© www.soinside.com 2019 - 2024. All rights reserved.