如何在R栏中的日期中添加午夜时间戳记?

时间:2020-08-12 14:26:37

标签: r csv datetime formatting timestamp

我在R数据框中有一列日期,看起来像这样,

   Date
2020-08-05
2020-08-05
2020-08-05
2020-08-07
2020-08-08
2020-08-08

因此日期格式为“ yyyy-mm-dd”。

我正在将此数据帧写入需要以非常特定的方式格式化的CSV。我需要将这些日期转换为格式“ mm / dd / yyyy hh:mm:ss”,所以这就是我希望这些列看起来像的样子:

       Date
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/5/2020 12:00:00 AM
8/7/2020 12:00:00 AM
8/8/2020 12:00:00 AM
8/8/2020 12:00:00 AM

日期没有开头的时间戳,因此所有日期都需要采用上述格式的午夜时间戳。

昨天我花了很多时间试图强制这种格式,但无法。我可以很容易地使用as.Date()将2020-08-05更改为8/5/2020,但是当我尝试添加午夜时间戳时就会出现问题。

如何为这些重新格式化的日期添加午夜时间戳记?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用format

df <- data.frame(Date = as.Date(c("2020-08-05", "2020-08-07")))
format(df$Date, "%d-%m-%Y 12:00:00 AM")
[1] "05-08-2020 12:00:00 AM" "07-08-2020 12:00:00 AM"

答案 1 :(得分:0)

dat <- data.frame(
  Date = as.Date("2020-08-05") + c(0, 0, 0, 2, 3, 3)
)

dat[["Date"]] <- format(dat[["Date"]], "%m/%d/%Y %I:%M:%S %p")
dat[["Date"]] <- sub("([ap]m)$", "\\U\\1", dat[["Date"]], perl = T)

dat
##                     Date
## 1 08/05/2020 12:00:00 AM
## 2 08/05/2020 12:00:00 AM
## 3 08/05/2020 12:00:00 AM
## 4 08/07/2020 12:00:00 AM
## 5 08/08/2020 12:00:00 AM
## 6 08/08/2020 12:00:00 AM