想要使用 R 在列中组合日期和时间

Posted

技术标签:

【中文标题】想要使用 R 在列中组合日期和时间【英文标题】:Want to combine date and time in a column using R 【发布时间】:2018-12-25 05:18:42 【问题描述】:

我有以下数据框

 Date             Time
10/03/2014       12.00.00
11/03/2014       13.00.00
12/03/2014       14.00.00

我想按如下方式创建一列

DT
10/03/2014 12.00.00
11/03/2014 13.00.00
12/03/2014 14.00.00

当我跑步时

data$DT <- as.POSIXct(paste(x$Date, x$Time), format="%d-%m-%Y %H:%M:%S")

我得到一个包含所有 NA 值的列 DT。

【问题讨论】:

将格式从“%d-%m-%Y %H:%M:%S”更改为“%d/%m/%Y %H.%M.%S” 谢谢。成功了 【参考方案1】:
Data$DT <- as.POSIXct(as.character(paste(data$Date, data$Time)), format="%d/%m/%Y %H.%M.%S")

data$Time <- gsub('\\.',':',data$Time)
data$Date <- gsub('/','-',data$Date)

data$DT <- as.POSIXct(as.character(paste(data$Date, data$Time)), format="%d-%m-%Y %H:%M:%S")

【讨论】:

【参考方案2】:

使用包lubridate:

data$DT <- with(data, ymd(Date) + hms(Time))

如果您希望该列是 POSIXct,请在此之后执行以下操作:

data$DT <- as.POSIXct(data$DT)

【讨论】:

【参考方案3】:

这应该是一个非常常见的问题,因此使用 dplyr 提供可重现的答案:

## reproducible example
library(dplyr)
library(magrittr)
DF <- data.frame(Date = c("10/03/2014", "11/03/2014", "12/03/2014"),
                 Time = c("12.00.00", "13.00.00", "14.00.00"))

DF_DT <- DF %>% 
  mutate(DateTime = paste(Date, Time)) %>% 
  mutate(across('DateTime', ~ as.POSIXct(.x, format = "%d/%m/%Y %H.%M.%S")))

【讨论】:

以上是关于想要使用 R 在列中组合日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python在列中插入日期

在列中显示两个不同日期的数据

当每周按一次按钮从另一张表导入日期时,如何在列中自动填充日期?

日期列中的剑道网格格式时间问题[重复]

如何在R中的数据框中转换日期/时间列

ggplot2使用单独的日期和可变数据帧按日期绘制时间序列r